基本的shell脚本

时间:2009-11-20 23:00:09

标签: shell scripting

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

结尾

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

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

示例:

organizfiles.sh mystuff / media

子文件夹将进入“媒体”

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

3 个答案:

答案 0 :(得分:4)

这是您开始的部分实现。尝试自己做其余的事。

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脚本。

答案 1 :(得分:2)

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

至于bash:

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

答案 2 :(得分:0)

这是我到目前为止的脚本

#!/bin/bash
mkdir movies
mkdir songs
mkdir textfiles
mv *.wmv movies
mv *.mov movies
mv *.mpg movies
mv *.mp3 songs
mv *.wma songs
mv *.txt text
ls -l movies, >> log.txt
ls -l songs >> log.txt
ls -l textfiles >> log.txt