我有一些视频文件都以.wmv .mov .mpg结尾。我的音乐文件以.mp3 .wma结尾。最后我有一些文本文件都以扩展名.txt
结尾我写了一个shell脚本,它生成子文件夹,一个用于音乐文件,一个用于视频文件,一个用于文本文件,然后将所有文件组织到正确的子文件夹中。 但我遇到了一个小问题...
***我希望脚本具有交互性,并提示用户是否要组织文件。此外,我希望脚本编写一个日志文件,其中包含每个文件的原始文件名,以及它移动到的新文件路径/名称。我希望脚本接受命令行参数,该参数是包含未组织文件的文件夹。这应该允许从文件系统中的任何位置定位和运行脚本,并接受任何未组织文件的文件夹。
示例:
organizfiles.sh mystuff / media
子文件夹将进入“媒体”
关于如何做到这一点的任何想法? 谢谢!
答案 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 tutorial或this以熟悉shell脚本。
答案 1 :(得分:2)
我建议切换到python,更容易编写和维护这样的代码。
至于bash:
答案 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