วิธีที่ 1:ในเบราว์เซอร์ไฟล์กราฟิกของคุณโดยใช้มุมมองแบบต้นไม้
ผมถือว่าเป้าหมายที่แท้จริงของคุณคือการให้ทางเลือกสำหรับแต่ละไฟล์และไม่พูดอย่างเคร่งครัดที่จะได้รับแจ้ง อย่างไรก็ตามหากคุณต้องการได้รับการแจ้งเตือนเกี่ยวกับแต่ละไฟล์ในเทอร์มินัลดูวิธีที่ 2 ด้านล่าง
เบราว์เซอร์ไฟล์กราฟิกส่วนใหญ่รองรับมุมมองแบบต้นไม้ซึ่งคุณสามารถดูลำดับชั้นของไดเรกทอรีได้หลายระดับ คุณสามารถคัดลอกหรือย้ายไฟล์ออกจากมุมมองนี้ไม่ว่าจะแยกทีละส่วนหรือโดยการเลือกไฟล์จากนั้นใช้งานในส่วนที่เลือกทั้งหมด สามารถใช้งานได้กับไฟล์จากหลาย ๆ โฟลเดอร์
ในเบราว์เซอร์ไฟล์บางไฟล์ต้องไปที่เมนูการตั้งค่าเพื่อเปิดใช้มุมมองแบบต้นไม้ ใน Caja เบราว์เซอร์ไฟล์ MATE จะเปิดใช้งานเสมอในมุมมองรายการ คลิกมุมมอง→รายการ (หรือกดCtrl+ 2) เพื่อสลับไปยังมุมมองรายการ แต่ละไดเรกทอรีมีรูปสามเหลี่ยมหันหน้าไปทางขวาเล็ก ๆ ทางด้านซ้ายของมันแสดงว่าสามารถขยายได้ หากต้องการขยายโฟลเดอร์ให้คลิกสามเหลี่ยมนั้นหรือกดปุ่ม→(ลูกศรขวา) เมื่อเลือกโฟลเดอร์ ในตัวอย่างนี้ฉันได้เลือกพวกเขาทั้งหมดหนึ่งโดยหนึ่งและฉันลากพวกเขาทั้งหมดในครั้งเดียวปลายทาง:

สมมติว่าแหล่งที่มาและปลายทางอยู่ในไดรฟ์เดียวกันการย้ายโดยค่าเริ่มต้น หากคุณต้องการคัดลอกแทนคุณจะต้องกดCtrlปุ่มค้างไว้

ในทางทฤษฎีแล้วมันเป็นเรื่องง่ายที่จะแก้ไขข้อผิดพลาดเมื่อใช้วิธีนี้เนื่องจากเบราว์เซอร์ไฟล์ส่วนใหญ่ (รวมถึง Caja) สนับสนุนCtrl+ Zเพื่อยกเลิกการกระทำล่าสุดรวมถึงการกระทำแบบแบตช์ อย่างไรก็ตามฉันมีโชคผสมกับที่ บางครั้งไฟล์กลับเข้าไปในโฟลเดอร์ที่ไม่ถูกต้อง
ข่าวดีก็คือคุณดูเหมือนจะทำงานกับเอกสารข้อความส่วนใหญ่ซึ่งมีแนวโน้มที่จะมีขนาดเล็กดังนั้นคุณจึงสามารถสำรองข้อมูลเพิ่มเติมtarเป็นครั้งแรกโดยไม่ต้องยุ่งยากมาก ฉันขอแนะนำให้ทำเช่นนั้นโดยไม่คำนึงถึงวิธีการที่คุณใช้
วิธีที่ 2 : findคำสั่งพร้อมการ-okดำเนินการ
มันเป็นเรื่องธรรมดาที่ใช้findในการค้นหาไฟล์และส่งต่อพา ธ ของพวกเขาไปยังคำสั่งภายนอกด้วยการกระทำ-execและ -execdirแต่findยังมี-okและ-okdirแจ้งที่ก่อนแต่ละครั้งที่พวกเขาเรียกใช้คำสั่ง หากคุณต้องการได้รับแจ้งในเทอร์มินัลเกี่ยวกับแต่ละไฟล์ฉันคิดว่านี่เป็นวิธีที่จะไป
เมื่อเสร็จแล้วเพื่อสร้างเอฟเฟกต์แบบเดียวกันดังที่แสดงไว้ด้านบนนั่นจะเป็นดังนี้:
ek@Gnar:~$ find Texts -xtype f -ok mv -t 'Glorious Destination Folder' {} \;
< mv ... Texts/Robert Frost/New Hampshire.pdf > ? y
< mv ... Texts/Robert Frost/In The Clearing.pdf > ? n
< mv ... Texts/Helen Keller/The Story of My Life.pdf > ? y
< mv ... Texts/Saki/The Short Stories of Saki.pdf > ? y
< mv ... Texts/Jane Austen/Sense and Sensibility.pdf > ? n
< mv ... Texts/Jane Austen/Pride and Prejudice.pdf > ? y
< mv ... Texts/Richard Connell/The Stolen Crime.pdf > ? n
< mv ... Texts/Richard Connell/The Most Dangerous Game.txt > ? y
< mv ... Texts/Mary Wollstonecraft Shelley/Mathilda.epub > ? n
< mv ... Texts/Mary Wollstonecraft Shelley/Frankenstein: Or, The Modern Prometheus.pdf > ? y
< mv ... Texts/W. E. B. Du Bois/The Souls of Black Folk.pdf > ? n
< mv ... Texts/W. E. B. Du Bois/Darkwater: Voices from within the Veil.htm > ? y
แทนที่Textsด้วยไดเรกทอรีต้นทาง (ซึ่งอาจเป็นเพียง.ถ้าคุณต้องการcd) และGlorious Destination Folderด้วยไดเรกทอรีปลายทางจริง
คำสั่งนี้รันหนึ่งคำสั่งต่อไฟล์ แตกต่าง-execและ-execdir, -okและ-okdirไม่สนับสนุน+ในสถานที่\;ที่จะผ่านเส้นทางที่พบในหลายภาวนาเดียวกันของคำสั่ง ดังนั้นคุณไม่จำเป็นที่จะใช้รูปแบบของ-t dest mvผมขอแนะนำให้ทำเช่นนั้นอยู่แล้วแม้ว่าทั้งสองทั่วไปด้วยfindและโดยเฉพาะอย่างยิ่งในสถานการณ์เช่นนี้เพื่อให้คำแนะนำที่ปรากฏมีลักษณะเหมือนคำสั่งที่พวกเขากำลังกระตุ้นเกี่ยวกับ
ตามคำสั่งนั้นถูกเขียนหากfindพบการเชื่อมโยงสัญลักษณ์ที่ชี้ไปยังไฟล์ปกติในที่สุดคำสั่งนั้น (ลิงก์ไม่ใช่เป้าหมาย) จะถูกย้ายมากกว่าที่จะละเว้น ถ้าคุณอยากที่จะดำเนินการเพียงหนึ่งไฟล์ปกติใช้แทน-type f-xtype f
คุณอาจต้องการทำสิ่งนี้ในscriptเซสชันเพื่อให้คุณสามารถคิดได้ว่าเกิดอะไรขึ้นถ้าคุณทำผิดพลาด แต่อีกครั้งไม่มีเหตุผลที่จะไม่มีการสำรองข้อมูล
วิธีที่ 3:สร้างรายการและแก้ไข
อย่างน้อยตราบใดที่ไฟล์ไม่มีบรรทัดใหม่ในชื่อคุณสามารถเริ่มต้นได้โดยใช้findคำสั่งง่าย ๆในการสร้างไฟล์ Manifest --a ที่แสดงชื่อไฟล์ที่คุณสนใจ (ในกรณีนี้) :
find Texts -xtype f >manifest
แทนที่manifestด้วยชื่ออะไรก็ตามที่คุณต้องการสำหรับไฟล์ที่แสดงรายการไฟล์ที่จะต้องพิจารณา (และปรับเปลี่ยนทิศทางที่เหลือตามนั้น)
ดังกล่าวข้างต้นแทนที่Textsด้วยไดเรกทอรีแหล่งที่แท้จริงของคุณซึ่งอาจเป็น.หากคุณได้cdไป อย่างไรก็ตามหากTextsเป็นเส้นทางสัมพัทธ์ (รวมถึงถ้าเป็น.) คุณควรตรวจสอบให้แน่ใจว่าอยู่ในตำแหน่งเดียวกันในภายหลังเมื่อคุณทำการเคลื่อนไหวจริง ๆ
หลังจากเรียกใช้findคำสั่งนั้นให้เปิดmanifestในโปรแกรมแก้ไขข้อความ ซึ่งอาจเป็นnano, vim, emacs, gedit, plumaฯลฯ ในการแก้ไข, ความคิดเห็นออกบรรทัดที่ชื่อไฟล์ที่คุณไม่ต้องการที่จะย้ายโดยการวาง#ที่จุดเริ่มต้นของพวกเขา บรรณาธิการบางคนจะเน้นบรรทัดเหล่านั้นให้แตกต่างกันแม้ว่าจะไม่รู้จักไฟล์ของคุณว่าอยู่ในรูปแบบใดก็ตามที่ทราบว่ามีความคิดเห็น แม้ว่าส่วนใหญ่จะไม่และเหตุผลที่แท้จริงที่ฉันแนะนำให้ทำเช่นนี้คือคุณในฐานะมนุษย์มีแนวโน้มที่จะมีประสบการณ์ในการแสดงความคิดเห็นบรรทัดในไฟล์กำหนดค่า (และอาจอยู่ในซอร์สโค้ด) ผมคิดว่านี่คือใช้งานง่ายมากขึ้นและข้อผิดพลาดน้อยกว่ามันจะทำเครื่องหมายบรรทัดที่คุณไม่ต้องการที่จะย้าย
แน่นอนคุณสามารถลบบรรทัดสำหรับไฟล์ที่คุณไม่ต้องการย้ายได้ ข้อดีของการแสดงความคิดเห็นออกมาคือมันจะชัดเจนในภายหลังในสิ่งที่คุณทำ
ในตัวอย่างของฉันนี่คือสิ่งที่เนื้อหาของไฟล์ดูเหมือนหลังจากที่ฉันแก้ไขมัน:
Texts/Robert Frost/New Hampshire.pdf
# Texts/Robert Frost/In The Clearing.pdf
Texts/Helen Keller/The Story of My Life.pdf
Texts/Saki/The Short Stories of Saki.pdf
# Texts/Jane Austen/Sense and Sensibility.pdf
Texts/Jane Austen/Pride and Prejudice.pdf
# Texts/Richard Connell/The Stolen Crime.pdf
Texts/Richard Connell/The Most Dangerous Game.txt
# Texts/Mary Wollstonecraft Shelley/Mathilda.epub
Texts/Mary Wollstonecraft Shelley/Frankenstein: Or, The Modern Prometheus.pdf
# Texts/W. E. B. Du Bois/The Souls of Black Folk.pdf
Texts/W. E. B. Du Bois/Darkwater: Voices from within the Veil.htm
จากนั้นคุณสามารถกรองบรรทัดที่คอมเม้นต์ด้วยgrepและไพพ์ผลลัพธ์xargsเพื่อส่งผ่านไปยังmv:
grep -Pv '^\s*#' manifest | xargs -d '\n' mv -t 'Glorious Destination Folder'
ข้างต้นแทนที่Glorious Destination Folderด้วยชื่อของปลายทางที่แท้จริง แค่นั้นแหละ; ไฟล์ของคุณถูกย้าย แน่นอนคุณสามารถเขียนechoก่อนmvเพื่อดูคำสั่งที่จะทำงานก่อนหากคุณต้องการ
วิธีการทำงานของคำสั่งคือ:
grepบรรทัดคำสั่งเอาท์พุทจากmanifestที่ไม่ ( -v) เริ่มต้น ( ^) ที่มีตัวเลือก ( *) ช่องว่าง ( \s) ตามด้วยตัวอักษร#ตัวอักษร การ-Pตั้งค่าสถานะเลือก PCRE เป็นภาษาถิ่นของนิพจน์ทั่วไป (ซึ่งทำให้\sฉันพิจารณาว่าสามารถอ่านได้มากกว่าแบบดั้งเดิม[[:space:]])
xargsคำสั่งแบ่งปัจจัยการผลิต (ซึ่งก็คือการส่งออกของgrep) ในช่อง newline สิ้นสุด ( -d '\n') จากนั้นวางแต่ละฟิลด์ (โดยไม่ต้องขึ้นบรรทัดใหม่ยุติ) เป็นอาร์กิวเมนต์แยกต่างหากในตอนท้ายของคำสั่งmv -t 'Glorious Destination Folder'ซึ่งมันจะทำงาน
-okIMHO คำตอบที่ดีที่สุด