web-dev-qa-db-fra.com

rechercher avec un chemin générique et exporter le résultat dans un fichier

J'ai besoin de trouver des fichiers qui correspondent à ce modèle:

find root_folder/*/match_string/*.ext

"*" signifie tous les niveaux de dossiers ou de fichiers. Cela signifie donc tout fichier avec une extension "ext" sous root_folder ou son sous-dossier et dont le chemin complet contient un dossier appelé "match_string", par exemple:

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

Mais la commande ci-dessus ne fonctionne pas. find -name ne fonctionne pas non plus.

Et je dois sortir la liste des résultats des fichiers correspondants dans un fichier pour une importation ultérieure dans la commande Zip. Il ne semble pas simple d'utiliser ">" si des commandes en cascade sont utilisées.

3
jw_

Vous pouvez utiliser

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

La commande recherchera tous les dossiers nommés match_string, puis recherchez tous les fichiers dont le nom se termine par .ext en eux et leurs sous-dossiers et liste tous les fichiers trouvés avec leurs chemins absolus. La liste sera stockée dans ~/file_list.

Si tu utilises

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

les fichiers seront répertoriés avec des chemins relatifs vers le répertoire courant, mais le nom du répertoire courant (qui est path/to/root_folder) ne sera pas affiché, à la place ./ est affiché.

2
mook765

Enregistrer la liste de fichiers dans un fichier avec "point de départ" supprimé ( homme trouver ).

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

Archive à partir du fichier ( man 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%)

Résultat de recherche de tuyau vers Zip.

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