Jawaban:
Ini melakukan apa yang Anda cari:
find . -maxdepth 1 -type f -print0 | xargs -L1 -p0 chmod +x
Ini menggunakan finddaripada lskarena, umumnya, parsing lsoutput tidak dapat diandalkan . Namun, formulir ini findakan berfungsi dengan nama file walaupun mengandung baris baru atau karakter sulit lainnya.
Penjelasan
find . -maxdepth 1 -type f -print0
Ini memilih file. Ini dapat dikustomisasi menggunakan banyak opsi find. Opsi print0memberi tahu finduntuk mencetak nama file dalam daftar yang dipisahkan nol. Ini adalah satu-satunya yang dapat diandalkan untuk mengirimkan daftar nama file.
xargs -L1 -p0 chmod +x
Ini mengambil daftar nama file yang dipisahkan nol yang dihasilkan oleh finddan menerapkan perintah Anda kepada mereka.
The -L1pilihan memberitahu xargsbekerja hanya pada satu nama file pada satu waktu. The -ppilihan memberitahu xargsprompt untuk persetujuan sebelum melanjutkan. The -0pilihan memberitahu xargsuntuk menggunakan karakter null sebagai pembatas antara nama file.
[Aku tidak tahu -ppilihan untuk xargssampai @ kwan menunjukkannya.]
find: warning: you have specified the -maxdepth option after a non-option argument -type, but options are not positional (-maxdepth affects tests specified before it as well as those specified after it). Please specify options before other arguments.Jadi bekerja dengan -maxdepth 1sebelum -type f, sebagai: find . -maxdepth 1 -type f -print0 | xargs -L1 -p0 chmod +x.
Anda bisa menggunakannya xargs.
misalnya:
ls|xargs -I path -p chmod +x path
Opsi -p: Beri tahu pengguna apakah akan menjalankan setiap baris perintah dan membaca baris dari terminal. Jalankan saja baris perintah jika responsnya dimulai dengan 'y' atau 'Y'.
xargs -psehingga saya akan menyalinnya.
touch "a very long file namedan tekan enter. Lihat kelanjutan garis dan cukup ketik kutipan penutup dan tekan enter lagi. tadaa, baris baru dalam nama file. Karena malas untuk mengetik ulang nama file yang panjang.
findperintah POSIX kompatibel dengan menggunakan-exec printf '%s\0' {} +. Jangan berpikir ada cara untuk membuat semuanya POSIX kompatibel.