find . -type f -print
druckt aus
./file1
./file2
./file3
Jede Möglichkeit, es drucken zu lassen
file1
file2
file3
?
f=`find . -name migration`; echo ${f/.\//}
find . -type f -print
druckt aus
./file1
./file2
./file3
Jede Möglichkeit, es drucken zu lassen
file1
file2
file3
?
f=`find . -name migration`; echo ${f/.\//}
Antworten:
Wenn sie nur im aktuellen Verzeichnis sind
find * -type f -print
Ist es das was du willst?
-print
erforderlich? Es gab das gleiche Ergebnis ohne diese Flagge.
Suchen Sie im aktuellen Verzeichnis nur reguläre Dateien und drucken Sie sie ohne " ./
" Präfix:
find -type f -printf '%P\n'
Vom Menschen finden, Beschreibung des -printf
Formats:
% P Dateiname mit dem Namen des Befehlszeilenarguments, unter dem es gefunden wurde, entfernt.
find
unterstützt -printf
(nicht alle).
\0
anstelle von verwenden, \n
wenn Sie es xargs -0
find -type f -printf '%P\0' | xargs -0 head
brew install findutils
;)
Verwenden Sie sed
find . | sed "s|^\./||"
find -exec
?
find -exec sh -c "echo {} | sed 's|^\./||'" \;
oder find -exec sh -c "sed 's|^\./||' <<< '{}'" \;
es kann kürzer sein
find * -type f
2> /dev/null
, Fehler zu ignorieren, die gemeldet werden, wenn der Befehl in einem leeren Verzeichnis ausgeführt wird.
Eine andere Möglichkeit, die ./
find * -type d -maxdepth 0
Da die -printf
Option unter OSX nicht verfügbar find
ist, ist hier ein Befehl, der unter OSX find funktioniert, nur für den Fall, dass jemand nicht gnu find
mit brew
etc installieren möchte :
find . -type f -execdir printf '%s\n' {} +
find . -type f -exec bash -c 'for f; do echo "${f#./}"; done' {} +
-exec /path/to/myscript.sh {}
in Ihrem verwendetfind
,-printf '%P\n'
funktioniert das nicht. Stattdessen muss ich das./
Präfix Chomping innerhalb des Skripts machen durch:p=${1#"./"}