我需要找到符合此模式的文件:
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 -@