Saya memiliki direktori dengan sekitar 100.000 file di dalamnya, dan saya ingin melakukan beberapa fungsi pada semua file yang dimulai dengan string tertentu, yang mungkin cocok dengan puluhan ribu file.
saya telah mencoba
ls mystring*
tetapi ini kembali dengan kesalahan bash 'Terlalu banyak argumen'. Rencana saya selanjutnya adalah menggunakan
find ./mystring* -type f
tetapi ini memiliki masalah yang sama.
Kode perlu terlihat seperti
for FILE in `find ./mystring* -type f`
do
#Some function on the file
done
for
loop, Anda harus menyalurkanfind
kewhile
.Jawaban:
menggunakan
sumber
find . -iname 'mystring*'
untuk pencarian case-sensitive.-maxdepth 1
sebelum-name
untuk membatasi menemukan ke folder saat iniakan memberi Anda semua file awal (yang dibutuhkan OP secara khusus) dengan substring tersebut
abc
.Ini hanya beroperasi pada direktori saat ini sedangkan
find
beroperasi secara rekursif ke dalam sub folder.Untuk digunakan
find
hanya untuk file yang dimulai dengan string Anda, cobalahsumber
Jika Anda ingin membatasi pencarian Anda hanya untuk file Anda harus mempertimbangkan untuk digunakan
-type f
dalam pencarian Andacoba gunakan juga
-iname
untuk pencarian case-insensitiveContoh:
Anda juga dapat melakukan beberapa operasi pada hasil tanpa tanda pipa atau xarg
Contoh:
Cari file dan tampilkan ukurannya dalam MB
sumber