是否可以创建一个shell脚本来查找特定类型文件夹内和下的文件,并将它们移动到另一个文件夹(此部分已经解决*)。然后删除文件移动到的所有文件夹?
我想应该以某种方式将路径/文件夹名称写入数组或文件,然后从那里读取“ rm ”它们。
查找文件示例:
find . \( -name "*.mpeg" – o –name "*.mkv" –o –name "*.avi" –o –name "*.mov" \) –size +536870912c –exec mv -n –v {} /my/favorite/folder/ \;
第二部分,其中移动的文件夹需要删除,但仍然缺失。
答案 0 :(得分:0)
如果你不介意使用其他可执行文件,你可以这样做:
find . \( -name "*.mpeg" – o –name "*.mkv" –o –name "*.avi" –o –name "*.mov" \) –size +536870912c | \
gawk -F'/[^/]*$' '{print "echo mv " $0 " /WHERE/TO/MOVE" ; dirstoremove[$1]++ }
END {for (d in dirstoremove) {print "echo rmdir " d } }' | \
bash
find
您的商品gawk
创建可移动文件列表并将其路径存储在数组中,处理完所有文件后,为阵列中的每个元素打印rmdir
bash
。 注意 :以上内容不会删除任何内容echo
es应该做什么。如果您对结果感到满意并想要执行结果,则可以删除两个“echo
”,或者只是添加一个| bash
到最后。
答案 1 :(得分:0)
如果您喜欢单行(就像我一样),您可以按如下方式扩展命令:
<your find command> -print | xargs -l dirname | sort -u | xargs rmdir
-print
回显已移动文件的路径。
xargs -l dirname
剥离文件名,生成目录名列表。
sort -u
通过删除重复项来减少目录名列表。
xargs rmdir
删除目录。