编辑:

编辑:

我必须将具有扩展名的文件从, , , ...下的许多子文件夹复制.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"

怎么运行的,

  1. find . -iname "*.tmt"获取所有相对路径,其文件名.tmt类型为运行此文件的位置和子文件夹
  2. xargs dirname删除文件名,留下相对路径目录的列表
  3. uniq删除重复的目录
  4. 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 命令。

相关内容