Absoluten Pfad rekursiv ausgeben

V

vasy

Grünschnabel
Hallo

Ich muss für über 3000 Dateien in verschiedenen Verzeichnissen (jedoch alle im Unterverzeichnis /test_verz) überprüfen.
Das Ganze will ich mit einer Schleife lösen

for i n `Pfad_zu_Verzeichnissen` do
...
...

Nun mein Problem, mit ls- R zeigt es mir zwar all die gewünschten Dateien rekursiv an, jedoch wird dabei nicht der absoluten Pfad angezeigt, aber diesen benötige ich, da es sonst die Dateien mit "for i in `ls- R`" nicht findet.

Hat jemand einen Tip wie ich von mir den gesantem Pfad ausgeben lassen kann?
Habe leider auch in den Man-Pages nichts Brauchbares gefunden :-(
 
versuchs mal mit
find . -name "*"
das gibt den relativen Pfad mit an, mit -exec kannste dann gleich deine Kommandos ausführen und brauchst die Schleife nicht
oder mit
find /hier/steht/dein/pfad -name "*"
gibt den absoluten Pfad aus, aber das wird nicht nötig sein.
Gruß,
yai
 
Danke für die Antwort, das hilft mir nun schon weiter.

Kann man aber nach einem -exec eine if Abfrage machen, welche sich auf die einzelnen Dateien bezieht.

z.B
if "mit find gelistete Datei" -ot "Datei xyz"; then
rm "mit find gelistete Datei"
fi

Wie bezeichnet man da die gelistete Datei?

EDIT:

Ich habe gerade bemerkt, dass ich diese if-Abfrage auf die Dateien nicht machen kann, weil diese die Berechtigung 640 besitzen.
Gibt es eine Möglichkeit dies auch ohne x-Berechtigung auszuführen?
 
Zuletzt bearbeitet:
In der if-Abfrage fehlt ein "test" oder ist das ein Tippfehler?

Aber trotzdem musst du natürlich mindestens Leserecht, also r oder 4 auf einer Datei haben, um Informationen über sie zu bekommen.
 
Wenn du alle Dateien l*ö*s*c*h*e*n willst, die ein gewisses A*l*t*e*r haben, dafür gibt's reichlich Threads die du mit der Suche finden kannst.

Ansonsten würde ich das so lösen:
Ein Skript mit den Abfragen schreiben, dass für eine Datei funktioniert, meinetwegen skript.sh und dann
Code:
find . -name "......" -exec skript.sh {] \;
 
Ja, man kann es auch kompliziert machen, weil -exec ja das Non-Plus Ultra ist gelle. ;)

Was habt ihr alle gegen die for Var in do... oder while read.
Das ist allemal effizienter, wenn mehr als ein befehl ausgeführt werden soll.
Während die Einen noch das Skript schreiben, sind die Anderen schon fertig.

Nur ein Beispiel von vielen Möglichkeiten:
Code:
find /path -name other option|
while read f;
 do
 command "$f"
 # beliebig viele command...
...
done
 
Dagegen habe ich nichts. Es gibt ja immer mehr als eine Lösung und wenn man nicht so Bash fest ist, dann macht man's zum Beispiel wie ich. Sicherlich rechnet sich das von der Geschwindigkeit her ab einer bestimmten Dateimenge. (Wahrscheinlich recht schnell)
Aber ich wollte gerne eine funktionierende Lösung posten.
 
Nimme es nicht persönlich, du hast doch den hier gesehen: ;)

-exec ist bei einem einfachen Befehl ok (wenn nicht zu viele Argumente erwartet werden).

Gruß Wolfgang
 

Ähnliche Themen

[gelöst] - for file in ... nur für bestimmte Endungen?

verzeichniss suche funktioniert nicht

Löschroutine mit Überprüfung

rsync: Quelle größer als Ziel => "Archiv" aufteilen/splitten

vsftpd zeigt Inhalte mancher Ordner nicht an

Zurück
Oben