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?
-print
dibutuhkan? 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 -printf
format:
% P Nama file dengan nama argumen baris perintah yang ditemukan dihapus.
find
mendukung -printf
(tidak semua mendukung ).
\0
alih-alih \n
jika 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/null
mengabaikan kesalahan yang dilaporkan ketika perintah dijalankan di direktori kosong.
Karena -printf
opsi tidak tersedia di OSX, find
berikut adalah satu perintah yang berfungsi di OSX temukan, untuk berjaga-jaga jika seseorang tidak ingin menginstal gnu find
menggunakan brew
dll:
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#"./"}