find . -type f -print
drukuje
./file1
./file2
./file3
Każdy sposób na wydrukowanie
file1
file2
file3
?
f=`find . -name migration`; echo ${f/.\//}
find . -type f -print
drukuje
./file1
./file2
./file3
Każdy sposób na wydrukowanie
file1
file2
file3
?
f=`find . -name migration`; echo ${f/.\//}
Odpowiedzi:
Jeśli znajdują się tylko w bieżącym katalogu
find * -type f -print
Czy tego chcesz?
-printwymagane? Dało ten sam wynik bez tej flagi.
Znajdź tylko zwykłe pliki w bieżącym katalogu i wydrukuj je bez ./przedrostka „ ”:
find -type f -printf '%P\n'
Od znalezienia człowieka, opis -printfformatu:
% P Nazwa pliku z nazwą argumentu wiersza poleceń, pod którym została znaleziona, została usunięta.
findobsługuje -printf(nie wszystkie).
\0zamiast, \njeśli chcesz to xargs -0find -type f -printf '%P\0' | xargs -0 head
brew install findutils;)
Użyj sed
find . | sed "s|^\./||"
find -exec?
find -exec sh -c "echo {} | sed 's|^\./||'" \; lub find -exec sh -c "sed 's|^\./||' <<< '{}'" \;
może być krótszy
find * -type f
2> /dev/nullzignorować błąd zgłaszany, gdy polecenie jest uruchamiane w pustym katalogu.
Inny sposób na usunięcie ./
find * -type d -maxdepth 0
Ponieważ -printfopcja nie jest dostępna na OSX, findtutaj jest jedno polecenie, które działa na OSX find, na wypadek, gdyby ktoś nie chciał zainstalować gnu findza pomocą brewitp:
find . -type f -execdir printf '%s\n' {} +
find . -type f -exec bash -c 'for f; do echo "${f#./}"; done' {} +
-exec /path/to/myscript.sh {}w swoimfind,-printf '%P\n'nie działa. Zamiast tego muszę zrobić./prefiks w skrypcie przez:p=${1#"./"}