【问题标题】:basic shell script基本的shell脚本
【发布时间】:2009-11-20 23:00:08
【问题描述】:

我有一些视频文件都以 .wmv .mov .mpg 结尾。我有以 .mp3 .wma 结尾的音乐文件。最后我有一些文本文件都以扩展名 .txt 结尾

我编写了一个 shell 脚本来生成子文件夹,一个用于音乐文件,一个用于视频文件,一个用于文本文件,然后将所有文件组织到正确的子文件夹中。 但是我遇到了一个小问题......

*** 我希望脚本是交互式的,并提示用户是否要组织文件。另外,我希望脚本编写一个日志文件,其中包含每个文件的原始文件名,以及它移动到的新文件路径/名称。我希望脚本接受命令行参数,即包含无组织文件的文件夹。这应该允许脚本在文件系统中的任何位置定位和运行,并接受任何无组织文件的文件夹。

例子:

organizefiles.sh mystuff/media

子文件夹在“媒体”中的位置

关于如何做到这一点的任何想法? 谢谢!

【问题讨论】:

  • 你不能只是发布一个功能清单然后说“关于如何做到这一点的任何想法?”选择一件具体的事情并询问如何做到这一点。否则,听起来您只是在要求 SO 为您编写脚本。
  • 您应该更详细地指定用户交互。并且您应该显示到目前为止的代码。
  • 你就在下面,你会发现我到目前为止所拥有的

标签: shell scripting


【解决方案1】:

这里有一个部分实现供您开始。尝试自己做其余的事情。

find /path -type f \( -iname "*.mp3" -o -iname "*.txt" \) -exec file -N "{}" + | while IFS=":" read -r filename type
do
    case "$type" in
        *[vV]ideo*|*AVI* ) echo "Video: $filename";;
        *[Aa]udio*|*MPEG*ADTS*) echo "Audio file: $filename";;
        *[Aa]scii*[tT]ext*) echo "Text: $filename" ;;
        * ) echo "No type: $filename-> type: $type";;
    esac
done

请阅读 bash tutorialthis 以熟悉 shell 脚本。

【讨论】:

  • 您太客气了,先生。这就像一个迷你教程本身!
【解决方案2】:

我会建议切换到 python,这样更容易编写和维护这样的代码。

至于 bash:

  1. 读数输入:read
  2. 读取命令行参数:see here
  3. 写入日志文件,只需执行echo "something" >> mylogfile.log

【讨论】:

  • 感谢您提供的链接,它们非常有用!
【解决方案3】:

这是我目前的脚本

#!/bin/bash mkdir 电影 mkdir 歌曲 mkdir 文本文件 mv *.wmv 电影 mv *.mov 电影 mv *.mpg 电影 mv *.mp3 歌曲 mv *.wma 歌曲 mv *.txt 文本 ls -l 电影,>> log.txt ls -l 歌曲 >> log.txt ls -l 文本文件 >> log.txt

【讨论】:

  • 您应该以 cmets 或编辑原始问题的形式发布后续问题。
猜你喜欢
  • 2013-02-10
  • 1970-01-01
  • 2022-11-29
  • 2013-03-06
  • 2014-09-07
  • 2021-10-11
  • 1970-01-01
  • 1970-01-01
  • 2011-09-22
相关资源
最近更新 更多