GNU/Linux >> Tutoriels Linux >  >> Linux

Comment puis-je forcer uniquement les chemins relatifs dans la sortie de recherche ?

Vous pouvez utiliser le %P format dans le -printf instruction :

find ${rootDir} -name '*.doc' -printf "%P\n"

s'affichera dans votre exemple :

subdir/test.doc
second.doc

Vous pouvez alors utiliser ce find liste dans un for expression, afin d'exécuter notre commande exec, comme dans :

for f in $( find ${rootDir} -name '*.doc' -printf "%P\n" );
do
    tar rvf docs.tar ${f}
done

Si vous exécutez find à partir du répertoire racine souhaité et ne spécifiez pas de point de départ absolu dans find , il affichera des chemins relatifs vers le tar invocations de commande qu'il construit. Comme ceci :

cd $rootDir
find . -name '*doc' -exec tar rvf docs.tar {} \;

Si vous ne souhaitez pas modifier définitivement le répertoire de travail actuel et que vous utilisez bash ou similaire à votre shell, vous pourriez le faire

pushd $rootDir
find . -name '*doc' -exec tar rvf docs.tar {} \;
popd

à la place.

Notez que pushd/popd ne sont pas présents dans tous les shells, consultez donc la page de manuel le cas échéant. Ils sont présents dans bash mais pas dans l'implémentation de base sh, donc tout en utilisant explicitement /bin/bash vous pouvez compter sur eux, vous ne pouvez pas si un script demande /bin/sh à la place (car cela peut correspondre à un shell plus petit qui n'a pas les améliorations de bash)


Linux
  1. Comment créer des répertoires de sortie arborescente uniquement ?

  2. Comment puis-je créer un fichier dans chaque dossier ?

  3. Comment puis-je exécuter dos2unix sur un répertoire entier ?

  4. Comment puis-je trouver des fichiers qui n'ont qu'une certaine autorisation pour le propriétaire ?

  5. Comment puis-je trouver ma version de shell à l'aide d'une commande Linux ?

Comment déplacer un lien symbolique relatif ?

Comment puis-je lister uniquement les fichiers non vides en utilisant ls ?

Comment puis-je créer un fichier tar en plusieurs parties sous Linux ?

Comment puis-je faire un chmod récursif uniquement sur les répertoires?

Comment puis-je trouver tous les fichiers liés en dur sur un système de fichiers ?

Comment puis-je trouver les interfaces réseau disponibles ?