#!/bin/bash
dir="./*"
for file in $dir; do
if [ -f "$file" ]; then #当文件名有空格时,不加“”会导致too many arguments异常
echo $file;
else
echo "$file"--directory;
# cd "$file"
cp "$file"/*.mp4 ./
rm -rf "$file"
fi;
done
这个脚本是为了把当前目录下子目录里的所有mp4,都copy到当前目录,这样看起来更方便
目录结构如下:
# BigYellow @ YSMdeMBP in ~/Movies/myDir [11:33:24]
$ tree
.
├── BY
│ ├── aa.avi
│ ├── bb.jpg
│ ├── by.mp4
│ └── cc.txt
├── LOOKMOUNTAIN
│ ├── aa2.avi
│ ├── bb2.jpg
│ ├── by2.mp4
│ └── cc3.txt
├── NEWWESTSTRADA
│ ├── aa1.avi
│ ├── bb1.jpg
│ ├── by1.mp4
│ └── cc1.txt
├── SAKULA
│ ├── aa.avi
│ ├── bb.jpg
│ ├── by.mp4
│ └── cc.txt
└── my_copy.sh
执行完my_copy.sh之后,子目录下的mp4文件都进入当前目录,并且删除子目录。
脚本里的copy可以换成mv,这样应该更合理,但是笔者总觉得copy成功之后再删除更保险一些,即使出错,也不用再把已经mv出来的文件mv回去