Perhatikan bahwa pertanyaan menyarankan keinginan untuk hanya memproses file_*file dalam direktori saat ini, sementara find(tanpa opsi tambahan) akan mencari seluruh pohon direktori di bawah direktori saat ini.
Scott
1
Ya benar. Tambahkan -maxdepth 0untuk mencegah ini.
"lebih baik" adalah subyektif. Lebih kuat, lebih kompleks, dan lebih lambat; dan sementara mvtidak peduli jika Anda memproses file bersama atau secara individual, beberapa kegunaan lain mungkin.
Amadan
Diedit (ditambahkan -maxdepth 0)
8
Gunakan -t "tentukan target directoty" di mv, ini seharusnya berfungsi memindahkan file * ke direktori tujuan / temp
xargs -n10
misalnya)Jawaban:
Di OS X:
Di Linux:
sumber
/
pada akhirnya adalah opsional. Anda dapat memasukkannya jika Anda mau, tetapi itu tidak perlu.-i
(atau-J
) tentukan token yang akan diganti dengan argumen yang masuk, alih-alih hanya ditempel di bagian akhir.man xargs
-i{}
, tanpa spasi. Atau katakan-I {}
.-i
, ia akan diganti.ls file_* | xargs -iFOO mv FOO temp/
bekerja persis sama.find . -name "file_*" -maxdepth 0 -exec mv {} temp/ \;
find
lebih baik daripada dils
mana mungkin ada lebih banyak file daripada jumlah argumen program yang diizinkan oleh shell Anda.sumber
file_*
file dalam direktori saat ini, sementarafind
(tanpa opsi tambahan) akan mencari seluruh pohon direktori di bawah direktori saat ini.-maxdepth 0
untuk mencegah ini.mv
tidak peduli jika Anda memproses file bersama atau secara individual, beberapa kegunaan lain mungkin.-maxdepth 0
)Gunakan -t "tentukan target directoty" di mv, ini seharusnya berfungsi memindahkan file * ke direktori tujuan / temp
mis: - #ls -l file * | xargs mv -t / temp
sumber
Seperti yang disarankan oleh @ user1953864: {
-i
,-J
} tentukan token yang akan diganti dengan argumen yang masuk.Sebagai contoh
ls
:Kemudian untuk memindahkan semua file java ke folder someDirectory dengan
xargs
akan sebagai berikut:Di Linux
Di MacOS
sumber
Solusi lain mungkin:
Kerugiannya adalah melakukan
mv
proses baru untuk setiap file.sumber