我的子目录中有很多文件,我希望将它们全部移至父目录。
前任:
20150530XXXX/1.jpg
20150530XXXX/2.jpg
20150530XXXX/3.jpg
20150530XXXX/4.jpg
20150531XXXX/1.jpg
20150531XXXX/2.jpg
20150531XXXX/3.jpg
20150531XXXX/4.jpg
我在 stackexchange 的另一个问题中发现以下命令:
find ./ -mindepth 2 -type f -exec mv -t A {} +
但是,这似乎会覆盖图像文件,因为每个图像文件都具有相同的名称(1-4.jpg
)。有没有办法可以将子目录的名称与文件名连接起来,例如移动20150531XXXX/4.jpg
到./20150531XXXX_4.jpg
?
答案1
如果您有perl
以下版本rename
(prename
在某些发行版上指定):
find . -type f -mindepth 2 -name '*.jpg' -exec rename -n 's!/([^/]+)$!_$1!' {} +
这只会向您显示该命令将执行的操作。如果您对此感到满意,请删除-n
实际重命名文件的选项(实际重命名不会打印任何内容)。