Saya melihat pertanyaan serupa lainnya, tetapi tidak menemukan satu yang akan memungkinkan saya untuk memahami konsep dan membuatnya berlaku untuk situasi saya berdasarkan waktu saya yang terbatas. Saya hanya menjalankan perintah find untuk menemukan file tertentu, tetapi beberapa file dalam sub-direktori memiliki nama yang sama yang ingin saya abaikan. Terima kasih atas bantuannya. Di bawah ini adalah perintah yang saya gunakan:
File / pola yang saya minati: / dev / abc-scanner, / dev / abc-cash ....
Perintah:
find /dev/ -name 'abc-*'
Apa yang dikembalikan:
/dev/abc-scanner
/dev/abc-cash
...
...
...
/dev/.udev/names/abc-scanner
/dev/.udev/names/abc-cash
Saya ingin mengabaikan file yang terakhir: /dev/.udev / ...
Jawaban:
Jika Anda hanya ingin membatasi temuan hingga level pertama, Anda dapat melakukannya:
... atau jika Anda khususnya ingin mengecualikan
.udev
direktori, Anda dapat melakukan:sumber
xargs
sebagai gantinya, jadi kira-kira seperti ini:find /dev -maxdepth 1 -name 'abc-*' | xargs ls -l
tetapi jika ada kemungkinan mereka memiliki spasi putih dalam nama, Anda harus melakukannyafind /dev -maxdepth 1 -name 'abc-*' -print0 | xargs -0 ls -l
ls -l /dev/abc-*
for x in /dev/abc-*; do readlink -f $x; done
ls -l /dev/abc-* /dev/*/abc-* | fgrep -v /dev/.udev
... kecuali setidaknya di Linux saya/dev/*/*
tidak menyertakan file/dev/.udev/*
sehingga Anda dapat menghilangkanfgrep -v
.Apakah ada alasan khusus yang perlu Anda gunakan
find
? Anda bisa menggunakanls
untuk menemukan file yang cocok dengan pola dalam direktori.Jika Anda perlu menggunakan
find
, Anda dapat menggunakan-maxdepth 1
sakelar untuk hanya berlaku pada direktori yang ditentukan.sumber
-maxdepth 1
daripada-maxdepth 0
ls
. Anda dapat menemukan file yang sama denganecho
atauwc
atau apa pun, karena shell memperluas wildcard untuk Anda. Jadifor file in /dev/abc-*; do something with each "$file"; done
mungkin apa yang sebenarnya dicari OP.find
tidak memilikinya misalnya.ls
tidak perlu.for f in abc*; ...
itu yang kamu butuhkan.Ini dapat melakukan apa yang Anda inginkan:
sumber
Tidak bekerja untuk saya. Tidak mengembalikan apa pun. Jika saya lakukan '.' itu memberi saya semua file dalam direktori di bawah ini yang sedang saya kerjakan.
Kembalikan apa pun dengan '.' sebagai gantinya saya mendapatkan daftar semua file 'besar' di direktori saya serta direktori rootfiles / tempat saya menyimpan yang lama.
Melanjutkan. Ini bekerja.
Tampaknya
/dev
berarti direktori yang menarik. Tetapi./
dibutuhkan, bukan hanya.
. Kebutuhan akan hal/
itu tidak jelas bahkan setelah saya menemukan apa/dev
artinya lebih atau kurang.Saya tidak bisa menanggapi sebagai komentar karena saya tidak punya 'reputasi'.
sumber