ไฟล์ chmod เฉพาะในไดเรกทอรีย่อยทั้งหมด


54

โปรดใครบางคนช่วยฉันด้วย chmod ฉันมีโครงสร้างไฟล์ต่อไปนี้

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

ฉันจะchmod 655ไปยังไฟล์ทั้งหมดภายใต้ dir1 และ subdir ทั้งหมดได้อย่างไร? ดังนั้นไฟล์ทั้งหมดจะได้รับอนุญาต 655 และ dir ทั้งหมดจะยังคงเหมือนเดิม

ขอขอบคุณ

คำตอบ:


108

ดีกว่าที่จะใช้

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

โซลูชันที่เสนออื่น ๆ จาก @sagarchalise จะไม่ทำงานหากชื่อไฟล์มีช่องว่างหรือเริ่มต้นด้วยเส้นประ


16
เกี่ยวเนื่องเพื่อ chmod ไดเรกทอรีทั้งหมดที่คุณสามารถใช้find . -type d -exec chmod 755 {} +เพื่อเปลี่ยนไดเรกทอรีทั้งหมดไป 755
คริสฮาร์เปอร์

2
+ สำหรับคืออะไร
Brettski

3
@Brettski: +เครื่องหมายถูกขยายโดยfindไปยังรายการพา ธ ของไฟล์ (หรือส่วนหนึ่งของมันหากยาวเกินไป)
enzotib

3
สำหรับ - คืออะไร
โอเรียนท์

2
ตัว--บ่งชี้การสิ้นสุดของตัวเลือกบรรทัดคำสั่ง --นี้จะช่วยป้องกันไฟล์ที่เริ่มต้นด้วยยัติภังค์จากการถูกตีความว่าเป็นตัวเลือกบรรทัดคำสั่งในขณะที่มันจะมาหลังจากที่
Tim Tisdall

8

ฉันคิดว่าจะเข้าไปข้างในdir1และ

find . -type f | xargs chmod 655

จะทำเคล็ดลับ


ใช้งานได้เช่นกัน แต่ฉันได้รับคำเตือนบางอย่างด้วย "ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว"
27711 netic

@ Manetic: มันขึ้นอยู่กับที่ฉันตอบในชื่อไฟล์ที่มีช่องว่าง
enzotib

4
เพื่อความสมบูรณ์เปลี่ยนไปหา -type f -print0 | xargs -0 chmod 655 จะแก้ไขปัญหาพื้นที่ฉันเชื่อว่าแม้ว่าคำตอบของ @ enzotib จะกระชับมากขึ้น
แมตต์ freake

สิ่งที่ด้าน freake กล่าวว่า
Sergiy Kolodyazhnyy
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.