批量移动子目录下的所有文件到父目录,但文件同名

批量移动子目录下的所有文件到父目录,但文件同名

我的子目录中有很多文件,我希望将它们全部移至父目录。

前任:

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以下版本renameprename在某些发行版上指定):

find . -type f -mindepth 2 -name '*.jpg' -exec rename -n 's!/([^/]+)$!_$1!' {} +

这只会向您显示该命令将执行的操作。如果您对此感到满意,请删除-n实际重命名文件的选项(实际重命名不会打印任何内容)。

相关内容