我必须将具有扩展名的文件从, , , ...下的许多子文件夹复制.tmt
到文件夹(例如: ) 。\main\allfiles\
/individualfiles/1/
/individualfiles/2/
/individualfiles/abc/
/individualfiles/xyz/
/individualfiles/zzz/
我的问题是从一个文件夹复制所有文件后,我必须运行 java 命令,然后从下一个文件夹再次复制,然后再次运行 java 命令。
我们逐个文件进行复制。从 复制第一个文件后/individualfiles/1/
,我们从 复制下一个文件/individualfiles/1/
,然后转到下一个文件夹/individualfiles/2/
并再次单独复制文件。
请让我知道从文件夹复制所有文件后如何运行 java 命令。
答案1
您可以通过将大量的 Linux 命令行实用程序串在一起来完成此任务。
像这样的事情,
find . -iname "*.tmt" | xargs dirname | uniq | xargs -I{} sh -c "cp -u {}*.tmt /destination/path && java command.jar"
怎么运行的,
find . -iname "*.tmt"
获取所有相对路径,其文件名.tmt
类型为运行此文件的位置和子文件夹xargs dirname
删除文件名,留下相对路径目录的列表uniq
删除重复的目录xargs -I{} sh -c "cp -u {}*.tmt /destination/path && java command.jar"
运行一个 sh 脚本,.tmt
将目录列表中的所有文件复制.tmt
到目标文件夹,如果复制成功,则运行该脚本,java command.jar
该脚本应替换为您的 java 命令。
编辑:
如果您的目标是一次复制 1 个文件,然后在复制每个文件后运行一个命令,这实际上会简化事情。上面的命令可以减少到1和4或者这样。
find . -iname "*.tmt" | xargs -I{} sh -c "cp -u {} /destination/path && java command.jar"
这将获取每个带有.tmt
找到的扩展名的文件find
,并运行一个脚本来复制并运行 java 命令。