найти с подстановочным путем и экспортировать результат в файл

Мне нужно найти файлы, которые соответствуют этому шаблону:

find root_folder/*/match_string/*.ext

«*» означает любые уровни папок или файлов. Таким образом, это означает любой файл с расширением «ext» в root_folder или его подпапке и полный путь которого содержит папку с именем «match_string», например:

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

Но приведенная выше команда не работает. find -name также не работает.

И мне нужно вывести список результатов сопоставленных файлов в файл для последующего импорта в команду zip. Кажется, не совсем просто использовать «>», если используются каскадные команды.

3
задан 25 September 2019 в 07:09

2 ответа

Можно использовать

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
ответ дан 23 October 2019 в 10:32

Сохраняют список файлов в файл с удаленной "отправной точкой" (, человек находит ).

pwd

  /opt/askubuntu/

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

Архив zip-archive-file.list

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 человека ).

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%)

Канал находят, что результат архивирует.

find /opt/askubuntu/ -type f -path '*/askubuntu/temp/*' \
        -name '*.ext' -printf %P\\n | zip /opt/backup/archive -@
2
ответ дан 23 October 2019 в 10:32

Другие вопросы по тегам:

Похожие вопросы: