2009-11-20 158 views
0

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

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

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

例子:

organizefiles.sh的MyStuff /媒体

其中的子文件夹将里面去了 “媒体”

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

+2

你不能真的只发布一个功能的洗衣清单,然后说:“如何做到这一点的任何想法?”选择一个具体的东西,并问如何做到这一点。否则,这听起来像你只是要求你为你写脚本。 – 2009-11-20 23:07:28

+1

您应该更详细地指定用户交互。你应该显示你到目前为止的代码。 – 2009-11-20 23:08:01

+0

你是正确的,你会发现我到目前为止 – 2009-11-20 23:35:37

回答

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

+0

你太善良了,先生。这就像一个迷你教程本身! – codebliss 2009-11-21 00:19:07

2

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

至于庆典:

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

谢谢你的链接,他们非常有用! – 2009-11-21 19:15:00

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 
+1

您应该发布后续评论或编辑原始问题。 – 2009-11-21 03:31:09

+0

对不起,谢谢! – 2009-11-21 19:14:19