我从一台服务器上镜像了一个目录,该目录有大量子目录,每个子目录包含一个 .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