วิธีที่ 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'
ซึ่งมันจะทำงาน
-ok
IMHO คำตอบที่ดีที่สุด