วิธีการเปลี่ยนการอนุญาตของไฟล์หลายไฟล์ที่พบด้วยคำสั่ง find?


11

ฉันมีไดเรกทอรีพร้อมไฟล์จำนวนมาก ส่วนหนึ่งของไฟล์มี755สิทธิ์และส่วนอื่นมี644สิทธิ์ ผมอยากจะแปลงไฟล์ที่มีสิทธิ์ในการ755 644ฉันได้ลองบรรทัดต่อไปนี้โดยใช้มันจากไดเรกทอรีตัวเอง:

find . -perm 755 -exec chmod 644 {}\;

อย่างไรก็ตามผลที่ได้รับอนุญาตมีการเปลี่ยนแปลงเฉพาะสำหรับไดเรกทอรีตัวเองและหลังจากเปลี่ยนกลับฉันพบว่าสิทธิ์ของไฟล์ยังคงไม่เปลี่ยนแปลง ฉันพลาดอะไรไปหรือเปล่า?


คำสั่งของคุณลบบิตที่เรียกใช้งานได้ออกจากไดเรกทอรีทำให้ไม่สามารถ chdir ไปหามันและดูไฟล์ที่มีอยู่ นั่นเป็นสาเหตุที่คำสั่งไม่ทำงาน ลองfind ./ -type f -exec chmod -x {} \;แทน
Shadur

คำตอบ:


17

ตกลงดูเหมือนว่าฉันได้พบปัญหา ดูเหมือนว่าจะต้องมีช่องว่างบังคับระหว่าง{}และ\;เพื่อคำสั่งจะมีลักษณะเช่นนี้:

find . -perm 755 -exec chmod 644 {} \;

ค่อนข้างมากกว่า:

find . -perm 755 -exec chmod 644 {}\;

นอกจากนี้ปัญหาเกี่ยวกับการเปลี่ยนการอนุญาตไดเรกทอรีสามารถแก้ไขได้โดยการเพิ่มการ-type fตั้งค่าสถานะดังนั้นมันจะมีลักษณะดังนี้:

find . -type f -perm 755 -exec chmod 644 {} \;

6
คุณสามารถใช้+แทน\;เพื่อลดจำนวนกระบวนการย่อยที่สร้างขึ้น
เควิน

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