คำถามติดแท็ก rm

คำถามที่เกี่ยวข้องกับคำสั่ง Linux remove (rm)

8
ลบไฟล์ แต่ไม่รวมไฟล์ทั้งหมดในรายการ
ฉันจำเป็นต้องล้างโฟลเดอร์เป็นระยะ ฉันได้รับ filelist ที่มีข้อความอนุญาตให้ใช้ไฟล์ใดได้บ้าง ตอนนี้ฉันต้องลบไฟล์ทั้งหมดที่ไม่ได้อยู่ในไฟล์นี้ ตัวอย่าง: dont-delete.txt: dontdeletethisfile.txt reallyimportantfile.txt neverdeletethis.txt important.txt โฟลเดอร์ของฉันทำความสะอาดประกอบด้วยสิ่งนี้: ls /home/me/myfolder2tocleanup/: dontdeletethisfile.txt reallyimportantfile.txt neverdeletethis.txt important.txt this-can-be-deleted.txt also-waste.txt never-used-it.txt ดังนั้นควรลบไฟล์นี้: this-can-be-deleted.txt also-waste.txt never-used-it.txt ฉันค้นหาบางอย่างเพื่อสร้างคำสั่งลบพร้อมตัวเลือกเพื่อแยกไฟล์บางไฟล์ที่มีให้

4
rm: ไม่สามารถลบไดเรกทอรี /: ปฏิเสธการอนุญาต
ฉันสร้างไดเรกทอรีชื่อ "shadi" และตั้งค่าการอนุญาตนี้ sinoosh@ubuntu:/home$ ls -ld shadi drwxr-xrwx 2 root root 4096 Jul 1 01:58 shadi ในสถานการณ์นี้ฉันมีสิทธิ์ "อื่น ๆ " แต่ทำไมฉันไม่สามารถลบมันได้? sinoosh@ubuntu:/home$ rm -r shadi/ rm: cannot remove ‘shadi/’: Permission denied
17 permissions  rm 

3
[co] หมายถึงอะไรในคำสั่ง“ rm -rf filename [co]”
สมมติว่าฉันมีสองไฟล์ใน/tmp: root@ubuntu:~# touch /tmp/hello.{pyc,py} root@ubuntu:~# ls /tmp/ hello.py hello.pyc ตอนนี้ให้เรียกใช้rm -rfคำสั่งด้วยตัวเลือก [co] root@ubuntu:~# rm -rf /tmp/hello.py[co] root@ubuntu:~# ls /tmp/ hello.py บางคนช่วยอธิบายสิ่งที่เกิดขึ้นที่นี่ได้ไหม? อะไรคือสิ่งที่[co]พารามิเตอร์? เราจะทำให้มันทำงานกับส่วนขยายอื่น ๆ ได้อย่างไร ถ้าฉันมีfoo.jsและfoo.coffeeไฟล์เราสามารถทำสิ่งที่ต้องการrm -rf /tmp/foo.coffe[co]ลบได้/tmp/foo.jsหรือไม่
16 command-line  bash  rm 

4
ฉันจะหยุดขออนุญาตจากฉันได้อย่างไร?
บนเซิร์ฟเวอร์ของฉัน rm ขออนุญาตจากฉันเสมอ (แม้ว่าฉันจะเป็น root) เมื่อฉันเรียกใช้บนเดสก์ท็อปของฉันมันไม่ได้ ชอบมาก $ rm mod_wsgi-3.3.tar.gz rm: remove regular file `mod_wsgi-3.3.tar.gz'? ฉันจะทำให้หยุดพร้อมท์ได้อย่างไร
15 rm 

6
ลบทั้งหมดยกเว้นไฟล์ที่ 12 ทุกไฟล์
ฉันมีไฟล์สองพันไฟล์ในรูปแบบชื่อไฟล์ 12345.end ฉันต้องการเก็บทุก ๆ ไฟล์ที่ 12 เท่านั้นดังนั้น file.00012.end, file.00024.end ... file.99996.end และลบทุกอย่างอื่น ไฟล์อาจมีตัวเลขก่อนหน้านี้ในชื่อไฟล์และโดยปกติแล้วจะอยู่ในรูปแบบ: file.00064.name.99999.end ฉันใช้ Bash shell และไม่สามารถหาวิธีวนลูปไฟล์จากนั้นรับตัวเลขและตรวจสอบว่ามันnumber%%12=0 ลบไฟล์หรือไม่ มีใครช่วยฉันบ้าง ขอบคุณ Dorina
14 bash  rm 

3
ยกเว้นจาก * ในบรรทัดคำสั่ง
มีสถานการณ์มากมายที่การใช้ a *หลีกเลี่ยงไม่ได้เช่นrm -rf *ในโฟลเดอร์ที่เก็บโฟลเดอร์ย่อยและไฟล์หลายพันรายการ แต่ถ้าคุณต้องการแยกไฟล์หรือโฟลเดอร์เพียงหนึ่งหรือสองไฟล์ออกจากrmคำสั่ง ฉัน googled ทางของรอบและพบเพียงการแก้ปัญหาที่มีความซับซ้อนค่อนข้างชอบfind . -depth -not \( -name 'one' -o -name 'two' \ -o -name 'three' \) -exec rm {} \;ตามที่ระบุไว้ที่นี่ มีความเป็นไปได้findไหมที่จะทำสิ่งนี้ในวิธีที่ง่ายกว่า - โดยไม่ต้องอ้อมว่า? เช่นrm -rf --exclude='one' --exclude='two' --exclude='three' *ใน rsync หรือเพียงแค่rm -rf -e 'one','two','three' *? แม้อาจจะเป็นไปได้โดยทั่วไปจะไม่รวมสิ่งจาก*(คำสั่งอื่น ๆ จึงชอบcp, mv... ไม่ได้มีการดำเนินการของตัวเอง)? มีอะไรที่คล้าย*{'one','two','three'}กัน
14 command-line  bash  rm 

2
มีข้อเสียของการใช้ rm $ (ls) เพื่อลบไฟล์หรือไม่?
ฉันสงสัยว่าถ้าใช้rm $(ls)เพื่อลบไฟล์ (หรือrm -r $(ls)เพื่อลบไดเรกทอรีด้วย) ปลอดภัยหรือไม่ เพราะในทุกเว็บไซต์ผู้คนให้วิธีอื่นในการทำสิ่งนี้แม้ว่าคำสั่งนี้จะดูเหมือนง่ายกว่าคำสั่งอื่น ๆ

3
จะค้นหา pid ของกระบวนการที่ลบไฟล์ได้อย่างไร
ฉันกำลังทำงานในโครงการที่เกี่ยวข้องกับการโยกย้าย VM บางครั้งอิมเมจ VM จะหายไปและฉันแค่อยากรู้ว่าใครคือผู้ร้าย ฉันลองใช้กระบวนการที่น่าสงสัย แต่ก็ไม่มีประโยชน์
13 process  rm 

1
จะลบไฟล์ที่ถูกแก้ไขระหว่างวันที่ระบุได้อย่างไร
เช่นเดียวกับในหัวข้อ: ฉันต้องการลบไฟล์ในไดเรกทอรีที่ได้รับการแก้ไขในช่วงวันที่ที่ต้องการ ฉันจะทำสิ่งนี้ได้อย่างไร

2
ไม่รวมไฟล์และไดเรกทอรีบางตัวเมื่อทำการลบไฟล์
dataไดเรกทอรีระดับบนสุดของฉันคือ dataมีหลายไดเรกทอรีและไดเรกทอรีเหล่านี้มีไดเรกทอรีย่อย ฉันต้องลบไฟล์และไดเรกทอรีdata/ทั้งหมดยกเว้นไฟล์หลายไฟล์ในบางไดเรกทอรี ตัวอย่างเช่นข้อมูลรวมถึงไดเรกทอรีและ100 101ผมแค่อยากจะให้a.txtและb.txtไฟล์ใน100/และc.txtและd.txtไฟล์ใน101/ขณะที่ลบไฟล์อื่น ๆ ทั้งหมดและไดเรกทอรีในและ100101 ตัวอย่าง: . ├── 100 │ ├── a.txt │ ├── b.txt │ ├── c.txt │ └── d.txt └── 101 ├── a.txt ├── b.txt ├── c.txt └── d.txt ฉันใช้rm -rf !(a.txt|b.txt)คำสั่ง แต่ฉันไม่สามารถใช้คำสั่งนี้สำหรับแต่ละไดเรกทอรีโดยอัตโนมัติ

3
rm ทำงานบนบรรทัดรับคำสั่ง แต่ไม่อยู่ในสคริปต์
เมื่อฉันทำrm *.old.*ในบรรทัดคำสั่งจะลบอย่างถูกต้อง แต่เมื่อฉันทำในส่วนต่อไปของสคริปต์ของฉันมันไม่ได้ rm *.old.*ไฟล์ทั้งหมด มีอะไรผิดปกติในสคริปต์ทุบตีของฉัน: for i in ./*; do if [[ -f $i ]]; then if [[ $i == *.old.* ]]; then oldfile=$i echo "this file is to be removed: $oldfile" rm $oldfile exec 2>errorfile if [ -s $errorfile ] then echo "rm failed" else echo "removed $oldfile!" …
11 bash  scripts  rm 

3
ข้อผิดพลาดทางไวยากรณ์ใกล้กับโทเค็นที่ไม่คาดคิด `('
เมื่อฉันใช้โค้ดด้านล่างในเทอร์มินัล Ubuntu มันใช้งานได้ดี: rm !(*.sh) -rf แต่ถ้าฉันวางโค้ดบรรทัดเดียวกันในเชลล์สคริปต์ (clean.sh) และรันเชลล์สคริปต์จากเทอร์มินัลมันจะพ่นข้อผิดพลาด: สคริปต์ clean.sh: #!/bin/bash rm !(*.sh) -rf ข้อผิดพลาดที่ฉันได้รับ: ./clean.sh: line 2: syntax error near unexpected token `(' ./clean.sh: line 2: `rm !(*.sh) -rf' คุณช่วยได้ไหม

1
rm: ไม่สามารถลบ `/ run / user / root / gvfs ': เป็นไดเรกทอรี
เมื่อใดก็ตามที่ฉันพิมพ์คำสั่งที่คล้ายกับsudo apt-get installหรืออะไรทำนองนี้ฉันจะได้รับข้อผิดพลาดประเภทนี้: $ sudo su # exit exit rm: cannot remove `/run/user/root/gvfs': Is a directory ฉันจะแก้ไขมันได้อย่างไร
11 12.10  sudo  rm 

2
เซิร์ฟเวอร์ Ubuntu มีถังขยะหรือไม่
ฉันใช้ Ubuntu เวอร์ชันเซิร์ฟเวอร์ ฉันสงสัยว่าไฟล์ยังคงเป็น "ถังขยะ" ฯลฯ ด้วยรุ่นนี้หรือไม่ ฉันกำลังลบสิ่งต่าง ๆ และฉันเพียงต้องการให้แน่ใจว่าไม่มีการใส่สิ่งของลงในถังขยะ

5
ผลลัพธ์ของการค้นหาไปยัง rm
ฉันพยายามวิ่ง locate *.orig | xargs rm แต่มันบอกว่า No such file or directory ฉันเคยเห็นวิธีที่จะทำfindแต่การค้นหาคืนค่าเส้นทางแบบเต็มไปยังวัตถุดังนั้นมันควรจะเป็นไปได้

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