Score:2

วิธีลบไดเร็กทอรีที่มีตัวเลขเป็นชื่อไฟล์ใน Ubuntu โดยใช้บรรทัดคำสั่ง

ธง in

ฉันมีไดเร็กทอรีที่มีไดเร็กทอรีย่อยซึ่งมีตัวเลขเป็นไดเร็กทอรี ตัวอย่างเช่น ฉันมีไดเร็กทอรีหลัก ทดสอบ ตอนนี้ฉันมีไดเร็กทอรีย่อยเช่น 1,2,3,4,5,6,7. ตอนนี้ฉันมีตัวแปรที่ส่งออกในเครื่องเช่น ส่งออก = 3. ฉันต้องการลบไดเร็กทอรีที่เป็น มากกว่าหรือเท่ากับ $a และ ต่ำกว่าหรือเท่ากับ $a+3, ดังนั้นฉันต้องการลบไฟล์ 4,5. ฉันจะบรรลุสิ่งนี้ได้อย่างไรใน อูบุนตู 18.04.6 LTS.

ฉันเหนื่อย rm -rf {$a..$($a+3)}มันไม่ได้ผล ฉันพยายามทำอย่างอื่นมากมายแต่ไม่สำเร็จ

David avatar
cn flag
ไม่เกี่ยวอะไรกับ OS จริงๆ คำถามคือทำอย่างไรในสคริปต์หรือบรรทัดคำสั่ง
Space Impact avatar
in flag
@ David จะเป็นสถานที่ที่เหมาะสมในการโพสต์นี้ที่ไหน คุณช่วยแนะนำได้ไหม
David avatar
cn flag
ไม่เป็นไรที่จะอยู่ที่นี่เพียงแค่ชัดเจนว่าไม่ใช่ปัญหาของระบบปฏิบัติการ คำสั่งหรือสคริปต์จะเหมือนกันบน Linux
mchid avatar
bo flag
@David คุณสามารถพูดได้ว่าเกี่ยวกับคำถามเกือบทุกข้อที่นี่ หากพวกเขาใช้ Ubuntu ก็ควรอยู่ในหัวข้อ
mchid avatar
bo flag
โปรดระบุเวอร์ชันของ Ubuntu ที่คุณใช้ ขอบคุณ.
Space Impact avatar
in flag
@mchid เพิ่มเวอร์ชัน Ubuntu ที่ฉันใช้อยู่
James S. avatar
de flag
คุณน่าจะโชคดีกว่าที่จะถามคำถามนี้ในที่ทั่วไป เนื่องจากไม่ใช่คำถามเกี่ยวกับ Ubuntu ลอง: https://unix.stackexchange.com/
bac0n avatar
cn flag
คุณสามารถใช้ได้เฉพาะจำนวนเต็มหรืออักขระเดี่ยวภายในนิพจน์ลำดับ การขยายวงเล็บปีกกาจะดำเนินการก่อนการขยายอื่นๆ จะไม่มีการตีความข้อความใดๆ ระหว่างวงเล็บปีกกา และการขยายวงเล็บปีกกาที่มีรูปแบบไม่ถูกต้องจะไม่เปลี่ยนแปลง คุณสามารถทำ `eval rm {$a..$((a+2))}` ได้
Score:2
ธง cn

ทางออกหนึ่งที่เป็นไปได้:

rm -r $(seq $a $((a+3)))

(หากคุณหมายถึงสิ่งที่คุณแสดงด้วยตัวอย่างโค้ดของคุณจริงๆ เช่น ไดเร็กทอรีด้านบน หรือเท่ากับ $a และด้านล่าง หรือเท่ากับ $a+3แทนสิ่งที่คุณเขียนในข้อความ "ด้านบน >$3 แต่ด้านล่าง <$3+2".

Space Impact avatar
in flag
มันใช้งานได้ ขอบคุณสำหรับคำตอบ ฉันจะแก้ไขคำถาม
Space Impact avatar
in flag
จะลบทุกอย่างที่ต่ำกว่าหรือเท่ากับ `$a-1` แต่ไม่รู้จำนวนน้อยที่สุดในไดเร็กทอรีได้อย่างไร
Tilman avatar
cn flag
เพียงแค่ `rm -rf $(seq 1 $((a-1))))` มันจะลบไดเร็กทอรีที่มีอยู่ และตัวเลือก `-f` จะระงับข้อความแสดงข้อผิดพลาดเกี่ยวกับไดเร็กทอรีที่ไม่มีอยู่
Score:0
ธง gb

คุณสามารถใช้วิธีต่อไปนี้เพื่อลบโฟลเดอร์หรือไฟล์

  1. ส่งเอาต์พุตของโฟลเดอร์ที่เกี่ยวข้องไปยังไฟล์ข้อความ ls >> text.txt

  2. แก้ไขไฟล์ text.txt เพื่อลบรายการทั้งหมดที่คุณไม่ต้องการลบ

  3. ออกคำสั่ง sudo rm -r -i $(cat text.txt). ใช้ -ผม ตั้งค่าสถานะหากคุณต้องการให้กระบวนการเป็นแบบโต้ตอบ

  4. เมื่อนำไฟล์ออกอย่าใช้ -ร ธง.

วิธีนี้จะได้ผลในกรณีที่โฟลเดอร์ที่คุณต้องการลบไม่ได้เรียงตามลำดับ

Cyrus avatar
cn flag
นี่คือที่ที่ฉันได้รับขนลุก โปรดทราบ: [ทำไม *ไม่* แยกวิเคราะห์ `ls`?](http://unix.stackexchange.com/questions/128985/why-not-parse-ls)
AjayC avatar
gb flag
ขอบคุณ ฉันไม่คิดว่าฉันมีทักษะที่จะเข้าใจความซับซ้อน/ปัญหาของคำสั่ง ```ls``` อย่างถ่องแท้ตามที่อธิบายไว้ในโพสต์ พูดตามตรงฉันไม่เห็นชื่อไฟล์หรือชื่อไดเร็กทอรีที่ซับซ้อนเช่นนี้

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา