Linux 按扩展名(.txz)在子目录中查找文件,然后使用正则表达式将它们移动到指定目录

Linux 按扩展名(.txz)在子目录中查找文件,然后使用正则表达式将它们移动到指定目录

我从一台服务器上镜像了一个目录,该目录有大量子目录,每个子目录包含一个 .txz 包以及常见的 .txt 和描述符文件。我想做的是:

使用正则表达式查找/定位所有子目录中的所有 .txz 文件,然后将它们全部移动到特定文件夹。在 slackware linux 上的 bash 中,要使用的正则表达式是什么?谢谢

答案1

按照你提出的方式回答你的问题:

find -regex '.*\.txz' -type f -exec mv {} '/destination/path' \;

但请注意,对于您的任务来说,使用正则表达式是不必要的。以下命令也可以正常工作:

find -name '*.txz' -type f -exec mv {} '/destination/path' \;

您也可以不使用除 bash 和 mv 之外的任何工具来执行此操作。这使用模式搜索和 shell 的 globstar 选项。

shopt -s globstar
for file in ./**/*.txz; do
    [[ -f $file ]] && mv "$file" '/destination/path'
done
shopt -u globstar

相关内容