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

rm เป็นคำสั่งเพื่อลบไฟล์

5
เหตุใดอักขระ wild card * จึงแตกต่างกันระหว่างคำสั่ง zip และ rm
ฉันรวบรวมสคริปต์เพื่อดำเนินการบางอย่างกับฉัน ฉันใช้โอเปอเรเตอร์การ์ด*เพื่อใช้ฟังก์ชั่นกับไฟล์ทุกประเภท แต่มีสิ่งหนึ่งที่ฉันไม่ได้รับ ฉันสามารถunzipไฟล์ทั้งหมดในโฟลเดอร์เช่นนี้ unzip "*".zip อย่างไรก็ตามในการลบไฟล์ zip ทั้งหมดหลังจากนั้นฉันต้องทำ rm *.zip นั่นคือมันไม่ต้องการเครื่องหมายคำพูด unzip ในทางกลับกันไม่สามารถใช้งานได้หากฉันให้ * (ให้คำเตือนว่า "ไฟล์ไม่ตรงกัน") ทำไมถึงแตกต่างกัน? สำหรับฉันดูเหมือนว่าการดำเนินการเดียวกันแน่นอน หรือฉันใช้การ์ดไวด์ไม่ถูกต้อง? การแนะนำให้รู้จักกับไวด์การ์ดใน Unix นั้นไม่ได้ทำสิ่งนี้จริงๆและฉันไม่สามารถหาตำแหน่งใด ๆ ในเอกสารrmหรือzip ฉันใช้เทอร์มินัลกับ Mac (Yosemite)
58 shell  wildcards  rm  zip 


8
ย้าย `rm` ไปที่ถังขยะ
มี Linux สคริปต์ / แอปพลิเคชันซึ่งแทนที่จะลบไฟล์ย้ายพวกเขาไปยังตำแหน่ง "ขยะ" พิเศษหรือไม่? ฉันต้องการสิ่งนี้แทนrm(อาจเป็นนามแฝงหลังมีข้อดีและข้อเสียสำหรับการที่) โดย“ ถังขยะ” ฉันหมายถึงโฟลเดอร์พิเศษ เดียวmv $* ~/.trashเป็นขั้นตอนแรก แต่นึกคิดนี้ควรจัดการ trashing หลายไฟล์ที่มีชื่อเดียวกันโดยไม่เขียนทับไฟล์ถังขยะเก่าและอนุญาตให้มีการเรียกคืนไฟล์ไปยังตำแหน่งเดิมของพวกเขาด้วยคำสั่งง่ายๆ (ชนิดของ“ยกเลิก”) ยิ่งไปกว่านั้นมันจะดีถ้าถังขยะถูกรีบูทโดยอัตโนมัติเมื่อรีบูท (หรือกลไกที่คล้ายกันเพื่อป้องกันการเติบโตไม่สิ้นสุด) โซลูชันบางส่วนสำหรับสิ่งนี้มีอยู่จริง แต่การกระทำ“ คืนค่า” โดยเฉพาะนั้นไม่สำคัญ มีโซลูชันที่มีอยู่สำหรับสิ่งนี้ซึ่งไม่พึ่งพาระบบถังขยะจากเชลล์กราฟิกหรือไม่? (นอกเหนือจากนี้มีการพูดคุยกันอย่างไม่รู้จบไม่ว่าจะเป็นวิธีการที่เป็นธรรมมากกว่าการใช้การสำรองข้อมูลบ่อยครั้งและ VCS ในขณะที่การสนทนาเหล่านั้นมีประเด็นผมเชื่อว่ายังคงมีช่องสำหรับคำขอของฉัน)
54 shell  rm 

1
'rm. *' เคยลบไดเรกทอรีหลักหรือไม่
นิพจน์.*ถูกขยายโดย bash เพื่อรวมไดเรกทอรีปัจจุบันและพาเรนต์: $ ls -la total 2600 drwxrwxrwx 2 terdon terdon 2162688 Sep 10 16:22 . drwxr-xr-x 142 terdon terdon 491520 Sep 10 15:34 .. -rw-r--r-- 1 terdon terdon 0 Sep 10 16:22 foo $ echo .* . .. ถ้าฉันใช้rm -rf .*Debian โดยใช้ GNU bash version 4.2.36(1)-releaseและrmจากrm (GNU coreutils) …
53 shell  wildcards  rm  posix 

3
ทำไม rm อนุญาตให้ลบไฟล์ภายใต้ความเป็นเจ้าของของผู้ใช้คนอื่น?
จากการโพสต์ทำไม rm สามารถลบไฟล์แบบอ่านอย่างเดียวได้? ฉันเข้าใจว่าrmต้องมีสิทธิ์เขียนในไดเรกทอรีเพื่อลบไฟล์ แต่ฉันพบว่ามันยากที่จะแยกแยะพฤติกรรมที่เราสามารถลบไฟล์ที่เจ้าของและกลุ่มต่าง ๆ ได้อย่างง่ายดาย ฉันพยายามต่อไปนี้ mtk: ชื่อผู้ใช้ของฉัน abc: สร้างผู้ใช้ใหม่ $ ls -l file -rw-rw-r-- 1 mtk mtk 0 Aug 31 15:40 file $ sudo chown abc file $ sudo chgrp abc file $ ls -l file -rw-rw-r-- 1 abc abc 0 Aug 31 15:40 file $ rm …

5
วิธีหลีกเลี่ยงความต้องการในการออก“ y” หลายครั้งเมื่อลบไฟล์ที่มีการป้องกัน
ฉันกำลังมองหาโซลูชันที่จะใช้เป็นคำตอบของ "rm: ลบไฟล์ปกติที่ป้องกันการเขียน [x]?" ฉันคิดว่าจะออกตัวละครตามด้วยการคืนรถหลาย ๆ ครั้งใน bashrc เราจะทำอย่างนั้นได้อย่างไร?
52 bash  command-line  rm 

5
ฉันจะลบไดเรกทอรีย่อยทั้งหมดออกจากภายในไดเรกทอรีได้อย่างไร
คำถามนี้เป็นเฟสที่สองของคำถามแรกที่ฉันโพสต์ที่นี่ ฉันมีไดเรกทอรีที่มีกลุ่มของไดเรกทอรีย่อยไฟล์. zip และไฟล์สุ่มอื่น ๆ ที่ไม่อยู่ในไดเรกทอรีย่อย ฉันต้องการสคริปต์บรรทัดคำสั่งเพื่อลบไดเรกทอรีย่อยทั้งหมดออกจากภายในไดเรกทอรีหลัก แต่เก็บไฟล์ zip และไฟล์ทั้งหมดที่ไม่ได้อยู่ในไดเรกทอรีย่อยใด ๆ ไดเรกทอรีย่อยทั้งหมดมีเนื้อหาดังนั้นฉันเชื่อว่าฉันต้องบังคับให้ลบด้วยคำสั่ง -f ดังนั้นโดยทั่วไปคำสั่งที่มีลักษณะอยู่ในไดเรกทอรีหลัก (หรือไดเรกทอรีปัจจุบัน) จะลบโฟลเดอร์ทั้งหมดออกจากภายใน แต่จะเก็บเนื้อหาและไฟล์อื่น ๆ ทั้งหมดที่ไม่ใช่โฟลเดอร์หรืออยู่ในโฟลเดอร์ ฉันเข้าใจว่าการลบรายการออกจากบรรทัดคำสั่งจำเป็นต้องได้รับการดูแลเป็นพิเศษ แต่ฉันได้ใช้ความระมัดระวังที่จำเป็นทั้งหมดแล้วในการสำรองข้อมูลจากระยะไกล

5
ฉันจะลบไดเรกทอรีซ้ำด้วยสัญลักษณ์แทนได้อย่างไร
ฉันทำงานผ่าน SSH ใน WD My Book World Edition โดยทั่วไปฉันต้องการเริ่มต้นที่ระดับไดเรกทอรีเฉพาะและลบไดเรกทอรีย่อยที่ตรงกัน.Apple*ทั้งหมดซ้ำ ๆ ฉันจะทำยังไง ฉันเหนื่อย rm -rf .Apple* และ rm -fR .Apple* ไม่ลบไดเรกทอรีที่ตรงกับชื่อนั้นภายในไดเรกทอรีย่อย

3
ไม่สามารถลบไฟล์ได้แม้จะทำงานเป็น root
ฉันอยู่ในขั้นตอนการโอนย้ายเครื่องจาก RHEL 4 ถึง 5 แทนที่จะทำการอัปเกรดจริง ๆ เราได้สร้าง VM ใหม่ (ทั้งสองเครื่องอยู่ในระบบคลาวด์) และฉันอยู่ในกระบวนการคัดลอกข้อมูลระหว่างสองเครื่อง ฉันเจอไฟล์ต่อไปนี้ซึ่งฉันต้องลบออกจากเครื่องใหม่ แต่ไม่สามารถทำได้แม้ว่าจะทำงานในฐานะรูท: -rw------- 1 2003 2003 219 jan 11 14:22 .bash_history ไฟล์นี้อยู่ภายใน / home / USER / โดยที่ USER เป็นบัญชีของคนที่สร้างเครื่อง เขาไม่มีบัญชีในเครื่องเก่าดังนั้นฉันจึงพยายามลบโฟลเดอร์หลักของเขาเพื่อให้เครื่องใหม่มีบัญชีเก่า แต่ฉันได้รับข้อผิดพลาดต่อไปนี้: rm: ne peut enlever `.bash_history': Opération non permise (แปลจากภาษาฝรั่งเศส: ไม่สามารถลบ XXX ไม่อนุญาตให้ดำเนินการ) ฉันได้ลองใช้คำสั่งต่อไปนี้ แต่มันก็ไม่ได้สร้างความแตกต่าง: chattr -i …
48 permissions  rhel  root  rm 

7
ฉันจะทำลายแผนผังไดเรกทอรีทั้งหมดซ้ำได้อย่างไร
ฉันมีแผนผังไดเรกทอรีที่ฉันต้องการทำลายด้วยยูทิลิตี้ 'ฉีก' ยูทิลิตี้ น่าเสียดายที่ shred ไม่มี-Rตัวเลือกสำหรับ shredding แบบเรียกซ้ำ ฉันจะทำลายแผนผังไดเรกทอรีทั้งหมดแบบวนซ้ำได้อย่างไร

5
ให้เอาต์พุต grep เป็น rm
ฉันพยายามที่จะgrepส่งออกท่อไปrmแต่มันก็ส่งผลสิ่งที่ไร้ประโยชน์ จำเป็นต้องมีสวิตช์rmหรือไม่ หรือสามารถrmให้ regexp โดยตรงได้หรือไม่ ls | grep '^\[Daruchini'| rm rm: ตัวถูกดำเนินการที่หายไปลองใช้ `rm - ช่วย 'สำหรับข้อมูลเพิ่มเติม
47 bash  grep  rm 

7
ฉันจะทำให้สคริปต์ทุบตีแข็งขึ้นเพื่อป้องกันอันตรายเมื่อมีการเปลี่ยนแปลงในอนาคตได้อย่างไร
ดังนั้นฉันจึงลบโฟลเดอร์บ้านของฉัน (หรืออย่างแม่นยำยิ่งขึ้นไฟล์ทั้งหมดที่ฉันมีสิทธิ์เข้าถึงเพื่อเขียน) สิ่งที่เกิดขึ้นคือฉันมี build="build" ... rm -rf "${build}/"* ... <do other things with $build> ในสคริปต์ทุบตีและหลังจากต้องไม่$buildเอาการประกาศและการใช้งานได้ทั้งหมด - rmแต่ rm -rf /*ทุบตีอย่างมีความสุขที่จะขยาย ใช่. ฉันรู้สึกงี่เง่าติดตั้งข้อมูลสำรองทำให้งานที่ฉันทำหายไป พยายามที่จะย้ายผ่านความอับอาย ตอนนี้ฉันสงสัยว่าอะไรคือเทคนิคในการเขียนสคริปต์ทุบตีเพื่อให้ข้อผิดพลาดดังกล่าวไม่สามารถเกิดขึ้นได้หรืออย่างน้อยก็มีโอกาสน้อย? ตัวอย่างเช่นถ้าฉันเขียน FileUtils.rm_rf("#{build}/*") ในสคริปต์ Ruby ผู้แปลก็จะบ่นbuildว่าไม่ได้ถูกประกาศดังนั้นภาษาก็ช่วยปกป้องฉัน สิ่งที่ฉันได้พิจารณาในการทุบตีนอกเหนือจากการจับกลุ่มrm(ซึ่งเป็นคำตอบมากมายในคำถามที่เกี่ยวข้องพูดถึงไม่ได้เป็น unproblematic): rm -rf "./${build}/"* นั่นคงจะฆ่างานปัจจุบันของฉัน (repo Git) แต่ไม่มีอะไรอื่น ตัวแปร / การกำหนดพารามิเตอร์ของrmนั้นต้องมีการโต้ตอบเมื่อทำหน้าที่ภายนอกไดเรกทอรีปัจจุบัน (ไม่พบสิ่งใด) ลักษณะพิเศษที่คล้ายกัน มันเป็นหรือมีวิธีอื่นในการเขียนสคริปต์ทุบตีที่ "แข็งแกร่ง" ในแง่นี้หรือไม่?
46 bash  shell-script  rm 

16
ฉันจะลบไฟล์ที่ชื่อไฟล์มีอักขระที่ไม่ได้พิมพ์ได้อย่างไร
ฉันพยายามสร้างไฟล์ที่ดูเหมือนจะไม่มีชื่อไฟล์ ฉันพบข้อมูลบางอย่างเกี่ยวกับวิธีรับรายละเอียดเพิ่มเติมของไฟล์ในเธรดต่อไปนี้ อย่างไรก็ตามฉันลองใช้คำแนะนำที่ปรากฏและไม่สามารถลบไฟล์ได้ ฉันไม่แน่ใจว่าสิ่งที่ฉันทำเพื่อสร้างมัน แต่มันเกิดขึ้นขณะพยายามคัดลอกไฟล์ xml ข้อมูลบางอย่างเกี่ยวกับไฟล์มีดังนี้ > ls -lb total 296 -rw-r--r-- 1 voyager endeavor 137627 Jan 12 12:49 \177 > file * : XML document > ls -i 417777 ฉันพยายามค้นหาโดยใช้สวิตช์ inum จากนั้นก็เป่าไปที่ rm เพราะดูเหมือนจะเป็นวิธีที่ไม่น่าเชื่อถือที่สุดในการกำจัดมัน อย่างไรก็ตามตัวอย่างที่ให้ไว้ที่ด้านล่างของเธรดที่ลิงก์ด้านล่างล้มเหลวสำหรับฉัน ตัวอย่างคือ: > find -inum 41777 -exec ls -al {} \; find: illegal option …

5
ฉันจะลบลิงค์สัญลักษณ์ทั้งหมดด้วยเป้าหมายพิเศษได้อย่างไร
ด้วยคำสั่ง: ls -la * ฉันสามารถแสดงลิงก์สัญลักษณ์ทั้งหมดของฉันได้ ฉันจะลบลิงก์สัญลักษณ์ทั้งหมดที่เชื่อมโยงไปยังโฟลเดอร์พิเศษได้อย่างไร ตัวอย่างเช่น: ในไดเรกทอรีของusr/local/binฉันฉันมีรายการต่อไปนี้: lrwxrwxrwx 1 root root 50 Apr 22 14:52 allneeded -> /usr/local/texlive/2011/bin/x86_64-linux/allneeded lrwxrwxrwx 1 root root 47 Apr 22 14:52 amstex -> /usr/local/texlive/2011/bin/x86_64-linux/amstex lrwxrwxrwx 1 root root 24 Apr 23 19:09 arara -> /home/marco/.arara/arara ตอนนี้ฉันต้องการลบลิงก์ทั้งหมดที่มีเส้นทาง /usr/local/texlive/
43 wildcards  symlink  rm 

4
มีวิธีใดที่จะป้องกันการลบไฟล์บางไฟล์จากไดเรกทอรีของผู้ใช้หรือไม่?
สมมติว่าผู้ใช้มีDirectory1และมีFile1 File2 CantBeDeletedFile วิธีการทำเช่นนั้นผู้ใช้จะไม่ได้รับอนุญาตให้ลบCantBeDeletedFile ? หากฉันเปลี่ยนความเป็นเจ้าของDirectory1และลบสิทธิ์การเขียนผู้ใช้จะไม่สามารถลบไฟล์ใด ๆ พวกเขายังไม่สามารถเพิ่มไฟล์ใหม่เป็นต้น ฉันแค่ต้องการที่จะสามารถตั้งค่าบางไฟล์ที่จะไม่ถูกลบ คำอธิบายที่เฉพาะเจาะจงมากขึ้น ฉันกำลังสร้างโปรไฟล์ผู้ใช้ ฉันกำลังสร้างไฟล์เปิดโปรแกรมของพวกเขาในสก์ท็อป ดังนั้นฉันต้องการตั้งค่าตัวเรียกใช้งานไฟล์ (.desktop) และทำให้พวกเขาเพื่อให้ผู้ใช้สามารถเปิดใช้งานได้เท่านั้นและพวกเขาไม่สามารถเปลี่ยนชื่อหรือลบได้เพียงแค่เรียกใช้ ปัจจุบันหากผู้ใช้เป็นเจ้าของไดเรกทอรีซึ่งมีไฟล์ใด ๆ เขาสามารถลบได้ หากไม่มีวิธีทั่วไปสำหรับ * nix ทั้งหมดแสดงว่าเป็น Linux และ ext4 FS

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