GNU/Linux >> Tutoriels Linux >  >> Linux

Rechercher des fichiers et imprimer uniquement leurs répertoires parents

Est-ce que j'ai râté quelque chose. Toutes ces regex et/ou boucles ne sont sûrement pas nécessaires, une ligne fera l'affaire. De plus, les solutions "for foo in $()" échoueront s'il y a des espaces dans les noms de chemin.

Utilisez simplement dirname deux fois avec xargs, pour obtenir le parent du parent...

# make test case
mkdir -p /nfs/office/hht/info
mkdir -p /nfs/office/wee1/info
touch /nfs/office/hht/info/.user.log
touch /nfs/office/wee1/info/.user.log

# parent's parent approach
cd /nfs//office/ && find . -name '.user.log' | xargs -I{} dirname {} | xargs -I{} dirname {}

# alternative, have find print parent directory, so dirname only needed once...
cd /nfs//office/ && find . -name ".user.log" -printf "%h\n"  | xargs -I{} dirname {}

Produit

./hht
./wee1

Vous pouvez le faire facilement avec les options de formatage du -printf action de find (voir man find ).

cd /nfs//office/ && find . -name '.user.log' -printf "%h\n"
./hht/info
./wee1/info

À partir de la page de manuel :

%h\n imprimera le chemin de chaque fichier sur une nouvelle ligne.

Veuillez noter que -printf est GNU uniquement. Cela ne fonctionnera pas sur macOS (un système BSD).


for file in $(find /nfs/office -name .user.log -print)
do
    parent=$(dirname $(dirname $file))
    echo $parent
done

EDIT :Désolé, vous avez manqué le répertoire des grands-parents.


Linux
  1. Rechercher des fichiers et des répertoires sous Linux avec la commande find

  2. Supprimer les fichiers et les répertoires par leurs noms. Aucun fichier ou répertoire de ce nom?

  3. Linux Supprimer des fichiers et des répertoires

  4. Comment rechercher et supprimer des répertoires et des fichiers vides sous Linux

  5. Comment déplacer des fichiers et des répertoires vers le dossier parent sous Linux ?

Comment trouver une chaîne ou un mot spécifique dans les fichiers et les répertoires

Rechercher la commande sous Linux (Rechercher des fichiers et des répertoires)

Faites glisser et déposez des fichiers et des dossiers dans le terminal pour imprimer leur chemin absolu

3 façons de trouver des fichiers et des répertoires sous Linux

Trouvez les fichiers et répertoires les plus volumineux sous Linux

Trouvez facilement des fichiers et des répertoires sur Linux