ฉันต้องการค้นหาไดเรกทอรีซ้ำ ๆ เพื่อค้นหาไฟล์ที่ไม่ได้เป็นของผู้ใช้คนหนึ่งและฉันไม่แน่ใจว่าจะเขียนสิ่งนี้อย่างไร
ฉันต้องการค้นหาไดเรกทอรีซ้ำ ๆ เพื่อค้นหาไฟล์ที่ไม่ได้เป็นของผู้ใช้คนหนึ่งและฉันไม่แน่ใจว่าจะเขียนสิ่งนี้อย่างไร
คำตอบ:
ยูทิลิตี find (1) มีอุปกรณ์ที่สามารถคัดค้าน ("กลับด้าน") โดยใช้ "!" ผู้ประกอบการ บนพรอมต์เราจะต้องหลีกเลี่ยงการถูกปฏิเสธด้วยแบ็กสแลชเนื่องจากเป็นเชลล์เมตาอักขระ ผลลัพธ์:
find . \! -user foo -print
xargs -I{} -P3 -- ${cmdhere} {}
$ {cmdhere} ทำงานกับแต่ละไฟล์พร้อมกัน cmdhere :: = utils unix มาตรฐาน utils unix มาตรฐาน :: = chmod, chown, stat, ls, ...
find . ...
หรือ piping กับxargs
วิธีแรกหรือวิธีที่สอง?
find . ! -user foo -exec chown <owner>:<group> {} \;
กำลังมองหาไฟล์ที่ไม่ได้เป็นของใครบางคน
คนอื่น ๆ ได้ตอบคำถามที่ว่า "ไม่ได้เป็นของผู้ใช้คนหนึ่ง"ในร่างกาย ต่อไปนี้เป็นคำถามที่ตอบคำถาม แต่ไม่ได้ให้ไว้:
$ find / -nouser
คุณสามารถใช้มันได้เช่น:
$ sudo find /var/www -nouser -exec chown root:apache {} \;
และหนึ่งที่เกี่ยวข้อง:
$ find / -nogroup
-user
ค้นหาโดยผู้ใช้หรือ ID ผู้ใช้และกลับ!
ค่าเพรดิเคต ดังนั้น! -user ...
.
คุณสามารถใช้สิ่งนี้:
find <dir> ! -user <username>
การใช้ z-shell (zsh) คุณสามารถใช้ได้
ls -laR *(^U)
หรือ
ls -la **/*(^U)
เพื่อค้นหาไฟล์ทั้งหมดที่คุณไม่ได้เป็นเจ้าของซ้ำ
-a
ตั้งค่าสถานะเนื่องจากการขยายสัญลักษณ์ จะจับไฟล์ dot ใช้ zsh ตัวเลือก:dotglob
setopt dotglob
ในหนึ่งบรรทัด: (setopt dotglob; ls **/*(^U) )
. วงเล็บจะต้องทำงานใน subshell เพื่อที่คุณจะได้ไม่ต้องวิ่งsetopt nodotglob
หลังจากเสร็จสิ้น
!
ดูเหมือนจะเป็นตัวเลือก