file chmod hanya di semua subdirektori


54

Tolong seseorang bantu saya dengan chmod, saya memiliki struktur file berikut

-dir1
--file1
--file2
--dir1a
---file1a1
---file1a2
--dir1b
---file1b1
---file1b2

Bagaimana cara chmod 655 ke semua file di bawah dir1 dan semua subdir? Jadi semua file akan memiliki 655 izin dan semua dir akan tetap seperti semula.

Terima kasih

Jawaban:


108

Lebih baik digunakan

find . -type f -exec chmod 655 -- {} +

Solusi lain yang diusulkan dari @sagarchalise tidak akan berfungsi jika nama file mengandung spasi atau mulai dengan tanda hubung.


16
Terkait, untuk chmod semua direktori yang dapat Anda gunakan find . -type d -exec chmod 755 {} +untuk mengubah semua direktori menjadi 755.
Kris Harper

2
Untuk apa +?
Brettski

3
@ Brettski: +tanda diperluas oleh findke daftar jalur file (atau bagian dari itu, jika terlalu lama).
enzotib

3
Untuk apa?
Orient

2
Yang --menunjukkan akhir dari opsi baris perintah. Ini mencegah file dimulai dengan tanda hubung dari ditafsirkan sebagai opsi baris perintah karena akan datang setelah --.
Tim Tisdall

8

Saya pikir masuk ke dalam dir1dan

find . -type f | xargs chmod 655

akan melakukan trik.


ini bekerja juga, tetapi saya sudah mendapat peringatan dengan "Tidak ada file atau direktori"
netic

@manetik: itu tergantung, seperti yang dikatakan dalam jawaban saya, pada nama file yang mengandung spasi.
enzotib

4
Untuk kelengkapan, ubah untuk menemukan. -type f -print0 | xargs -0 chmod 655 akan memperbaiki masalah ruang angkasa saya percaya, meskipun jawaban @ enzotib lebih ringkas
matt freake

apa kata matt freake
Sergiy Kolodyazhnyy
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.