【问题标题】:Shell script to move folders based on file type to its appropriate folder用于根据文件类型将文件夹移动到相应文件夹的 Shell 脚本
【发布时间】:2020-07-08 12:20:28
【问题描述】:

所以我一直在研究一个 shell 脚本,它将在下载文件夹中查找并检查它及其子目录中的特定文件类型,然后将包含这些文件的目录移动到适当的文件夹中。 (例如,包含 .mp3 文件的下载文件夹中的专辑将移至音乐文件夹,包含 .mp4 文件的电视节目将移至视频文件夹)但我遇到了一些问题,我不知道是什么继续。

这是脚本:

#MOVES MUSIC FROM DOWNLOADS TO MUSIC FOLDER

for DIR in /home/kevin/Downloads/*/
do
    [ $(find "$DIR" "*.mp3" | wc -l) -ne 0 ] && mv "$DIR" /home/kevin/Music/
done





for DIR in /home/kevin/Downloads/*/
do
    [ $(find "$DIR" "*.flac" | wc -l) -ne 0 ] && mv "$DIR" /home/kevin/Music/
done






for DIR in /home/kevin/Downloads/*/
do
    [ $(find "$DIR" "*.wav" | wc -l) -ne 0 ] && mv "$DIR" /home/kevin/Music/
done




#MOVES VIDEOS FROM DOWNLOADS TO VIDEOS FOLDER

for DIR in /home/kevin/Downloads/*/
do
    [ $(find "$DIR" "*.mkv" | wc -l) -ne 0 ] && mv "$DIR" /home/kevin/Videos/
done






for DIR in /home/kevin/Downloads/*/
do
    [ $(find "$DIR" "*.mp4" | wc -l) -ne 0 ] && mv "$DIR" /home/kevin/Videos/
done




for DIR in /home/kevin/Downloads/*/
do
    [ $(find "$DIR" "*.avi" | wc -l) -ne 0 ] && mv "$DIR" /home/kevin/Videos/
done




#MOVES IMAGES FROM DOWNLOADS TO PICTURES

for DIR in /home/kevin/Downloads/*/
do
    [ $(find "$DIR" "*.jpg" | wc -l) -ne 0 ] && mv "$DIR" /home/kevin/Pictures/
done





for DIR in /home/kevin/Downloads/*/
do
    [ $(find "$DIR" "*.png" | wc -l) -ne 0 ] && mv "$DIR" /home/kevin/Pictures/
done





for DIR in /home/kevin/Downloads/*/
do
    [ $(find "$DIR" "*.gif" | wc -l) -ne 0 ] && mv "$DIR" /home/kevin/Pictures/
done

有趣的是,它确实有效,但并不像预期的那样。所以在我的下载文件夹中,我有两个子目录。一个是包含 mp3 的专辑,另一个是包含 .mp4 的电视节目。当我运行脚本时,它会将这两个文件夹移动到 /home/kevin/Videos。很奇怪。

所以我认为将所有这些代码放在一个脚本中可能会出现问题,所以我将每个部分分成了自己的脚本,一个用于移动音乐,名为 move_music.sh,另一个用于移动视频,名为 move_video.sh。我将专辑和电视节目移回下载文件夹以测试这些新脚本,但问题是如果我运行 move_video.sh 它将电视节目和专辑移动到音乐文件夹。如果我将文件夹放回下载并运行 move_music.sh 它会将两个文件夹移动到音乐文件夹!

有人知道这里发生了什么吗?任何帮助将不胜感激!

【问题讨论】:

  • 尝试查看find "$DIR" "*.oops"的输出

标签: linux shell


【解决方案1】:

您需要将-name 选项传递给find,例如:

find "$DIR" -name '*.mp3'|wc -l

而且你的脚本看起来不错。

【讨论】:

  • 就是这样!太感谢了! :D
猜你喜欢
  • 2015-11-15
  • 2013-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多