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?
-printerforderlich? 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 -printfFormats:
% P Dateiname mit dem Namen des Befehlszeilenarguments, unter dem es gefunden wurde, entfernt.
findunterstützt -printf(nicht alle).
\0anstelle von verwenden, \nwenn Sie es xargs -0find -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 -printfOption unter OSX nicht verfügbar findist, ist hier ein Befehl, der unter OSX find funktioniert, nur für den Fall, dass jemand nicht gnu findmit brewetc 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#"./"}