Wie erhalte ich den absoluten Pfad mit dem Befehl find unix?

11

So ermitteln Sie den absoluten Pfad mithilfe des Befehls find.
Eigentlich führe ich das folgende Skript aus: -

find . -size +20M | while read a
do
     i=$(echo $a | sed 's:/: :g')
     echo $a;
     j=($i)
     fileName=${j[${#j[@]}-1]}
     userName=${j[${#j[@]}-3]}
done

aber hier Variable $azeigt Pfad ab, ./Downloads/filenameaber ich möchte absoluten Pfad von /.

Shivam Sharma
quelle

Antworten:

16

Verwenden Sie find mit einem absoluten Pfad.

find /path/ -size +20M

Es wird der gesamte Pfad gedruckt.
Wenn Sie das Arbeitsverzeichnis nicht kennen, verwenden Sie die Befehlsersetzung für pwdFolgendes:

find "`pwd`" -size +20M 
   #or like this:
find "$(pwd)" -size +20M

Um Ihr Arbeitsverzeichnis zu erhalten

Auf jeden Fall scheint es , dass Bash Mann jetzt zu verwenden , raten $()über , ``so dass Sie das zweite Formular verwendet werden soll. Sie können wahrscheinlich auch direkt auf die $PWDVariable verweisen, die das Arbeitsverzeichnis Ihres Skripts enthält, und es wäre wahrscheinlich schneller, wenn Sie es in einer Schleife verwenden müssten.

find "$PWD" -size +20M
Kiwy
quelle
Aber ich habe keinen Weg, ich habe nur. als aktuelles Verzeichnis dann?
Shivam Sharma
2
Beginnen Sie nicht mit ., $(pwd)sondern verwenden Sie stattdessen, um einen vollständigen Pfad zu erhalten.
BSD
8

Sie können den pwdBefehl verwenden oder die Datei ausdrucken realpath:

$ find "$(pwd)" -size +20M
$ find . -size +20M -exec realpath {} +

Beide Befehle geben Ihnen den absoluten Pfad zu den Dateien.

Spack
quelle
Aber der zweite gibt find: `realpath ': Keine solche Datei oder kein solches Verzeichnis
Shivam Sharma
Summen. Möglicherweise haben Sie es nicht installiert, obwohl es im coreutilsPaket enthalten ist. Versuchen Sie es mit zu finden which realpath.
Spack
Es findet nichts ..
Shivam Sharma
Welches System verwenden Sie?
Spack
Linux BANE 3.7-trunk-amd64 # 1 SMP Debian 3.7.2-0 + kali8 x86_64 GNU / Linux
Shivam Sharma
0

Zum Auflisten aller 7 Tage alten PNG- und JPEG-Dateien mit absolutem Pfad.

$ find $PWD/ -mtime -7 -print -exec grep -e ".png\|.jpg" {} \;

Hier $PWDwird zu jeder übereinstimmenden Datei hinzugefügt.

aty
quelle