find . -type f -print
mencetak
./file1
./file2
./file3
Cara apapun untuk mencetaknya
file1
file2
file3
?
find . -type f -print
mencetak
./file1
./file2
./file3
Cara apapun untuk mencetaknya
file1
file2
file3
?
f=`find . -name migration`; echo ${f/.\//}
Jawaban:
Jika mereka hanya ada di direktori saat ini
find * -type f -print
Itukah yang kamu inginkan?
-printdibutuhkan? Itu memberikan hasil yang sama tanpa bendera itu.
Temukan hanya file biasa di bawah direktori saat ini, dan cetak tanpa ./awalan " ":
find -type f -printf '%P\n'
Dari man find, deskripsi -printfformat:
% P Nama file dengan nama argumen baris perintah yang ditemukan dihapus.
findmendukung -printf(tidak semua mendukung ).
\0alih-alih \njika Anda ingin menyalurkannya ke xargs -0(misalnya jika nama file berisi spasi), misalnyafind -type f -printf '%P\0' | xargs -0 head
brew install findutils;)
Gunakan sed
find . | sed "s|^\./||"
find -exec?
find -exec sh -c "echo {} | sed 's|^\./||'" \; atau find -exec sh -c "sed 's|^\./||' <<< '{}'" \;
itu bisa lebih pendek
find * -type f
2> /dev/nullmengabaikan kesalahan yang dilaporkan ketika perintah dijalankan di direktori kosong.
Karena -printfopsi tidak tersedia di OSX, findberikut adalah satu perintah yang berfungsi di OSX temukan, untuk berjaga-jaga jika seseorang tidak ingin menginstal gnu findmenggunakan brewdll:
find . -type f -execdir printf '%s\n' {} +
find . -type f -exec bash -c 'for f; do echo "${f#./}"; done' {} +
Cara lain untuk menghapus ./
find * -type d -maxdepth 0
-exec /path/to/myscript.sh {}di Andafind,-printf '%P\n'itu tidak berfungsi. Sebagai gantinya, saya harus melakukan./awalan yang mengunyah di dalam skrip dengan:p=${1#"./"}