使用通配符路径查找并将结果导出到文件

使用通配符路径查找并将结果导出到文件

我需要找到符合此模式的文件:

find root_folder/*/match_string/*.ext

“*” 表示任意层级的文件夹或文件。因此它表示 root_folder 或其子文件夹下任何扩展名为“ext”的文件,且其完整路径包含名为“match_string”的文件夹,例如:

root_folder/f1/f2/match_string/f3/f4/1.ext
root_folder/f1/f2/match_string/2.ext

但是上述命令不起作用。find -name 也不起作用。

我需要将匹配文件的结果列表输出到一个文件中,以便稍后导入到 zip 命令中。如果使用级联命令,使用“>”似乎并不简单。

答案1

您可以使用

find /path/to/root_folder -type d -name "match_string" -exec find "{}" -type f -name "*.ext" \; > ~/file_list

该命令将搜索所有名为 的文件夹match_string,然后搜索所有名称以 结尾的文件.ext及其子文件夹,并列出所有找到的文件及其绝对路径。列表将存储在 中~/file_list

如果你使用

cd /path/to/root_folder
find -type d -name "match_string" -exec find "{}" -type f -name "*.ext" \; > ~/file_list

path/to/root_folder文件将按照当前目录的相对路径列出,但不会显示当前目录的名称(即),而是./显示。

答案2

将文件列表保存到删除“起点”的文件(男人找到)。

pwd

  /opt/askubuntu/

find /opt/askubuntu/ -type f -path '*/askubuntu/temp/*' -name '*.ext' -fprintf /opt/backup/zip-archive-file.list %P\\n

zip 存档文件.列表

cat /opt/backup/zip-archive-file.list

  temp/example/a/a/a.ext
  temp/example/a/a.ext
  temp/example/c/c.ext
  temp/example/c/c/c.ext
  temp/example/b/b.ext
  temp/example/b/b/b.ext

来自文件的存档 (人邮编)。

zip /opt/backup/archive -@ < /opt/backup/zip-archive-file.list

  adding: temp/example/a/a/a.ext (stored 0%)
  adding: temp/example/a/a.ext (stored 0%)
  adding: temp/example/c/c.ext (stored 0%)
  adding: temp/example/c/c/c.ext (stored 0%)
  adding: temp/example/b/b.ext (stored 0%)
  adding: temp/example/b/b/b.ext (stored 0%)

通过管道将查找结果传送至 zip。

find /opt/askubuntu/ -type f -path '*/askubuntu/temp/*' \
        -name '*.ext' -printf %P\\n | zip /opt/backup/archive -@

相关内容