2010-04-07 8 views

Antwort

37

Wenn sie nur im aktuellen Verzeichnis sind

find * -type f -print

Ist das, was Sie wollen?

+0

Ich wusste, dass es mit sed getan werden könnte, aber das ist eine viel bessere Lösung. Vielen Dank! – breadjesus

+0

nett, nie darüber nachgedacht –

+12

Das wird Dateien mit Namen verpassen, die mit einem Punkt beginnen. – Sean

25

Verwendung sed

find . | sed "s|^\./||" 
+0

Dies ist meine bevorzugte Lösung; Es ist POSIX-kompatibel (funktioniert praktisch überall, sogar in eingebetteten Systemen), sehr kurz und es ist unwahrscheinlich, dass es zu einem unerwarteten Verhalten kommt. Dies sollte die akzeptierte Antwort sein. –

+5

Wie würde das mit 'find -exec' kombiniert werden? – PaulrBear

+0

'find -exec sh -c" echo {} | sed 's |^\ ./ ||' "\;' oder 'find -exec sh -c" sed 's |^\ ./ | | ' <<< '{}' "\;' – xenithorb

10

kann es kürzer sein

find * -type f 
+0

Besser mit '2>/dev/null', um den Fehler zu ignorieren, der gemeldet wird, wenn der Befehl in einem leeren Verzeichnis ausgeführt wird. – neevek

136

finden nur normale Dateien im aktuellen Verzeichnis auf, und drucken Sie sie ohne "./" prefix:

find -type f -printf '%P\n' 

Aus Mann finden, Beschreibung von -printf Format:

% P Dateiname mit dem Namen des Befehlszeilenarguments, unter dem es gefunden wurde.

+9

+1 Gute Lösung, wenn Ihre Version von 'find'' -printf' unterstützt (nicht alle). –

+1

Wie Todd sagte, aber genauer: es ist nicht POSIX 7. –

+6

Unterstützt oder nicht, es ist definitiv sicherer als die angenommene Antwort. –

Verwandte Themen