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

แท็กเปลี่ยนชื่อหมายถึงการกระทำของการให้ชื่อที่แตกต่างกับไฟล์ที่มีอยู่หรือคัดลอกไฟล์เป็นส่วนหนึ่งของการดำเนินงานอื่น ๆ (.eg สำเนาระยะไกล, การสำรองข้อมูล) ใช้แท็กนี้เช่นกันสำหรับคำถามที่เกี่ยวข้องกับคำสั่งเปลี่ยนชื่อ (perl)


2
เครื่องหมายทับ (/) หลังชื่อไดเร็กทอรีบนคำสั่งเชลล์
ฉันมีคำถามเล็กน้อยที่นี่ ถ้าผมมีสองไฟล์พูดfileaและfileb, mv filea filebจะ ลบ fileb เปลี่ยนชื่อfileaเป็นfileb แล้วถ้าฉันมีสองไดเรกทอรีพูดdiraและdirb, mv dira dirbจะ ย้ายdiraเข้าไปdirb(มันจะกลายเป็นdirb/dira) สังเกตว่าในทั้งสองกรณีไม่มีการบอกกล่าวหรือข้อความแล้วนี่มันค่อนข้างจะขัดแย้งกับฉัน ฉันคิดว่าmv dira dirbควรเขียนทับdirbเนื้อหาของdira(หรือรวมสองไดเรกทอรีภายใต้ชื่อไดเรกทอรีdirb) ฉันจำได้ว่าอ่านบางที่ว่าชื่อไดเรกทอรีที่มีเครื่องหมายทับ (เหมือนdira/) ถือว่าเป็นไดเรกทอรีและชื่อที่ไม่มีเครื่องหมายทับ (เหมือนdira) จะถือว่าเป็นไฟล์ (ไปยังขอบเขตที่แน่นอน) ตอนนี้ฉันต้องการทำให้เชลล์ (zsh และอาจทุบตี) เคารพเครื่องหมายของไดเรกทอรีโดยใช้เครื่องหมายทับ มีตัวเลือกเทอร์มินัลที่ทำให้ฉันสามารถบังคับใช้ได้หรือไม่? เพื่อชี้แจงนี่คือพฤติกรรมที่ฉันต้องการ: mv dira dirbผลลัพธ์dirbจะถูกเขียนทับด้วยเนื้อหาของdira mv dira dirb/ผลลัพธ์ในdiraการถูกย้ายเข้าdirb(ในdirb/dira) มีใครคิดแบบเดียวกับฉัน หรือฉันแค่แปลก ๆ ?

5
เปลี่ยนชื่อไฟล์โดยการเพิ่มตัวเลขภายในชื่อไฟล์
ฉันมีไดเรกทอรีซึ่งมีไฟล์รูปภาพที่กำหนดหมายเลขไว้ดังนี้: 01.png 02.png 03.png 03.svg 04.png 05.png 06.jpg 07.png 08.png 09.png 09.svg 10.png บางครั้งอาจมีไฟล์หลายเวอร์ชันในรูปแบบที่แตกต่างกัน (เช่น a pngและsvgเวอร์ชันของ03และ09ไฟล์ด้านบน) แต่ตัวเลขจะเรียงกันเป็นอย่างอื่น โดยทั่วไปจะมีไฟล์ดังกล่าว 40-80 ไฟล์ในแต่ละไดเรกทอรี ตัวเลขสอดคล้องกับลำดับภาพเหล่านี้ปรากฏในต้นฉบับ (เอกสาร Word แต่นั่นไม่สำคัญ) ไม่มีวิธีอื่นในการกำหนดลำดับของภาพ ถ้าฉันเพิ่มรูปภาพใหม่ลงในต้นฉบับฉันต้องวางสำเนาของรูปภาพในไดเรกทอรีนี้ด้วยหมายเลขที่ถูกต้อง ดังนั้นหากภาพใหม่เป็นภาพที่ห้าในต้นฉบับฉันจำเป็นต้องเปลี่ยนชื่อไฟล์ในไดเรกทอรีเป็นสิ่งนี้เพื่อให้มีที่ว่างสำหรับมัน: 01.png 02.png 03.png 03.svg 04.png 06.png 07.jpg 08.png 09.png 10.png 10.svg 11.png อะไรคือวิธีที่ตรงไปตรงมาที่สุดจากบรรทัดคำสั่งหรือจากสคริปต์หรือแมโครเพื่อกำหนดหมายเลขไฟล์ใหม่ทั้งหมดที่เริ่มต้นด้วยจำนวนที่แน่นอน ฉันมีการติดตั้ง Fedora Linux แบบมาตรฐานโดยใช้ bash
14 linux  bash  rename 

5
วิธีลบ (1) จากชื่อไฟล์โดยใช้คำสั่ง find
ฉันเพิ่งแปลงไฟล์ FLAC ทั้งหมดของฉันเป็นอัตราการสุ่มตัวอย่างที่ต่ำกว่า 44.1 kHz และความลึกบิต 24 บิต (เนื่องจาก iPhone / iPod ไม่รองรับสิ่งที่เหนือกว่า) โดยใช้ XLD บน Mac OS 10.7 (Lion) แม้ว่าฉันจะบอกให้ XLD เขียนทับไฟล์ก่อนหน้านี้ทั้งหมด แต่ XLD ก็ต่อ(1)ท้ายไฟล์ที่คล้ายกันมาก some_song.m4a ถึง some_song(1).m4a ดังนั้นตอนนี้ฉันต้องการลบไฟล์นั้น(1)จากไฟล์ FLAC ทั้งหมดที่ฉันแปลง ฉันรู้ว่าฉันอาจจะใช้บางโปรแกรมหรือแม้แต่ AppleScript เพื่อเปลี่ยนชื่อไฟล์ แต่ฉันต้องการเรียนรู้โดยใช้บรรทัดคำสั่งโรงเรียนเก่า ฉันรู้ว่าfind . -name *\(1\).m4aจะคว้าไฟล์ FLAC ที่แปลงแล้วทั้งหมด ต่อไปฉันรู้ว่าฉันต้องทำบางสิ่งด้วย-execและmvเปลี่ยนชื่อไฟล์ที่พบทั้งหมด (1)แต่สิ่งที่ผมไม่สามารถคิดออกเป็นวิธีที่จะทำให้ชื่อไฟล์เดิมและมีเพียงลบ บางทีฉันอาจต้องทำการจับภาพ regex ของกลุ่มเพื่อจัดเก็บส่วนของชื่อไฟล์ที่ฉันไม่ต้องการแก้ไข หรือบางทีมันเป็นไปไม่ได้ที่จะทำทุกอย่างในบรรทัดเดียวและฉันควรสร้างเชลล์สคริป (ซึ่งฉันไม่สะดวกที่จะทำ แต่ฉันยินดีที่จะลอง) …

4
วิธีการเปลี่ยนชื่อหลายไฟล์ในไดเรกทอรีในเวลาเดียวกัน
ฉันมีไดเรกทอรีบอกว่า/var/tmp/abcมี 4 ไฟล์: 12345-ram-3e3r5-io9490-89adu9.csv 45434-dam-qwe35-to9490-43adu9.csv 11234-cam-yy3r5-ro9490-85adu9.csv 14423-sam-hh3r5-uo9490-869du9.csv ฉันต้องการเปลี่ยนชื่อไฟล์ CSV ทั้งหมด (ค้นหาไฟล์ทั้งหมด & เปลี่ยนชื่อไฟล์) ในวิธีที่สั้นที่สุด (อาจเป็นหนึ่งซับ) วิธีนี้: XXXXX-ram-3e3r5-io9490-89adu9.csv XXXXX-dam-qwe35-to9490-43adu9.csv XXXXX-cam-yy3r5-ro9490-85adu9.csv XXXXX-sam-hh3r5-uo9490-869du9.csv
12 shell  files  rename 

4
วิธีการเปลี่ยนชื่อไฟล์ในขณะที่คัดลอก?
ฉันจะคัดลอก (สไตล์การเก็บถาวรที่ไม่มีการเปลี่ยนแปลงวันที่) ไฟล์ทั้งหมดในไดเรกทอรีสำรองไปยังไดเรกทอรีของผู้ใช้ในขณะที่เปลี่ยนชื่อแต่ละไฟล์เพื่อลบส่วนสตริงแบบสุ่มออกจากชื่อ (เช่น -2b0fd460_1426b77b1ee_-7b8e) ได้อย่างไร cp จาก: /backup/path/data/Erp.2014.02.16_16.57.03-2b0fd460_1426b77b1ee_-7b8e.etf ถึง: /home/user/data/Erp.2014.02.16_16.57.03.etf แต่ละไฟล์จะเริ่มต้นด้วย "Erp" ตามด้วยสตริงการประทับวันที่ตามเวลาด้วยสตริงแบบสุ่มและจากนั้นส่วนขยาย ".etf" ฉันต้องการเก็บองค์ประกอบของชื่อทั้งหมดรวมถึงการประทับวันที่ ฉันแค่ต้องการลบสตริงแบบสุ่ม สตริงสุ่มช่วยให้การสำรองข้อมูลหลายไฟล์เดียวกัน อย่างไรก็ตามในกรณีนี้ฉันเพิ่งรัน fdupes และไม่มีการซ้ำซ้อน ดังนั้นฉันสามารถกู้คืนไฟล์ทั้งหมดโดยลบสตริงแบบสุ่ม ฉันกำลังมองหาคำสั่ง bash หนึ่งบรรทัดเพื่อทำ หากไม่ได้ผลฉันสามารถทำได้สองขั้นตอนขึ้นไป ปกติฉันจะใช้ KRename แต่ในกรณีนี้ฉันต้องทุบตี (ฉันทำงานจากระยะไกล)
12 bash  shell  rename  file-copy 

4
เปลี่ยนชื่อไฟล์ในโฟลเดอร์ท้องถิ่นเพิ่มคำนำหน้าหรือคำต่อท้าย
ฉันมีไฟล์จำนวนมากในโฟลเดอร์และฉันต้องการเพิ่มคำนำหน้าหรือคำต่อท้าย (ไม่ใช่ทั้งคู่ ) ลงในพวกเขา ฉันตรวจสอบที่นี่และพบว่าฉันสามารถใช้ได้ for filename in *.jpg; do mv "$filename" "prefix_$filename"; done; เพื่อเพิ่มคำนำหน้าให้กับไฟล์ทั้งหมดที่ลงท้ายด้วย.jpg(และถ้าฉันลบออก.jpgมันจะเพิ่มคำนำหน้าให้กับไฟล์ทั้งหมดในโฟลเดอร์ปัจจุบัน) อย่างไรก็ตามฉันต้องการที่จะสามารถ เพิ่ม sufix (นั่นคือเปลี่ยนชื่อfilename.extเป็นfilename.whatever.ext) ตรวจสอบว่าคำนำหน้าหรือคำต่อท้ายมีอยู่แล้วและข้าม สร้างนามแฝงที่ยอมรับข้อโต้แย้งเช่นaddprefix whatever *.extหรือaddsufix whatever *.*

3
ไฟล์ cp หรือ mv ไปยังไดเรกทอรีเดียวกันพวกเขาอยู่ในเมื่อฉันอยู่ในอีก?
ถ้าฉันอยู่~/blobและฉันมีไฟล์~/blob/a_long_directory_name/c/x.x ฉันพิมพ์ได้ mv blob/a_long_directory_name/c/x.x blob/a_long_directory_name/even_more/y.y มีทางลัดใดบ้างโดยที่ฉันสามารถพิมพ์บางสิ่งที่สั้นกว่าซึ่งใช้เส้นทางไดเรกทอรีในพารามิเตอร์แรก (ไม่ใช่ไดเรกทอรีปัจจุบันของฉัน), เช่น mv blob/a_long_directory_name/c/x.x $same_dir/y.y ที่สิ่งที่ต้องการ$same_dirจะชี้ไปที่ dir of param 1


4
'เปลี่ยนชื่อ' และ 'mv' ต่างกันอย่างไร
มันไม่ชัดเจนสำหรับฉัน แต่อะไรคือความแตกต่างระหว่างmvและrename(จากutil-linux-ng 2.17.2เมื่อ/usr/bin/rename) มีข้อดีมากกว่าข้ออื่นที่renameยอมรับการแสดงออกปกติmvหรือไม่ ฉันเชื่อว่าrenameสามารถจัดการเปลี่ยนชื่อไฟล์หลายรายการพร้อมกันในขณะที่mvไม่ทำเช่นนี้ ฉันไม่พบข้อบ่งชี้ที่ชัดเจนในmanหน้าเว็บของพวกเขาสิ่งอื่นจะแยกพวกเขาออกจากกันหรือผ่านการสอบสวนด้วยตัวเอง
12 rename  mv 

5
ย้ายไฟล์ตามรายการในไฟล์ (พร้อมช่องว่างนำหน้า)
ฉันมีไฟล์ที่มีชื่อไฟล์ ตัวอย่างเช่น: /tmp/list.txt (ขึ้นอยู่กับช่องว่างที่จุดเริ่มต้นของแต่ละบรรทัด): /tmp/file.log /app/nir/home.txt /etc/config.cust ฉันต้องการใช้หนึ่งบรรทัดเพื่อย้ายไฟล์ทั้งหมดที่ระบุไว้/tmp/list.txtไปยัง/app/dest ดังนั้นควรเป็นดังนี้: cat /tmp/list.txt | xargs mv /app/dest/


1
รายการยกเว้น mv บรรทัดคำสั่ง
มีวิธีการmv, cpหรือการดำเนินการใด ๆ เช่นไฟล์ที่ฉันสามารถระบุไฟล์ทั้งหมดที่ฉันไม่ต้องการได้รับผลกระทบ? ตัวอย่างเช่นสมมติว่าผมมีโฟลเดอร์ที่มีไฟล์ที่file1, file2และfile3และฉันต้องการที่จะย้ายfile1และfile2ที่ไหนสักแห่ง แทนที่จะตั้งชื่อไฟล์ที่จะย้าย ( mv file1 file2 /path/to/destination) อย่างชัดเจนฉันต้องการตั้งชื่อไฟล์ที่จะไม่ย้ายและให้ไฟล์อื่น ๆ ทั้งหมดในโฟลเดอร์ถูกย้าย ( mv --some-switch file3 /path/to/destination)


4
เปลี่ยนชื่อไดเรกทอรีย่อยซ้ำ ๆ ที่ตรงกับ regex
Seriesฉันมีเซิร์ฟเวอร์สื่อที่มีโฟลเดอร์ที่เรียกว่า ( /media/Expansion2/Series/) ในนั้นฉันมี (แปลกใจ!) ทีวีซีรีส์ เหล่านี้เป็นเพียงชื่อที่แสดงเช่น/media/Expansion2/Series/The Big Bang Theory/ ภายในโฟลเดอร์ของแต่ละรายการ (และนี่คือปัญหาที่เกิดขึ้น) ฉันมีโฟลเดอร์ซีซัน ขณะนี้ฉันมีการผสมผสานของ 2 อนุสัญญาต่อไปนี้ (รวมถึงอีกสองสามข้อ): /media/Expansion2/Series/The Big Bang Theory/The Big Bang Theory Season 1 /media/Expansion2/Series/The Big Bang Theory/Season 2 Season #ในท้ายที่สุดผมต้องการที่จะเปลี่ยนชื่อโฟลเดอร์ทั้งหมดเพียง เป็น regex ฉันอาจจะพูดอะไรบางอย่างเช่น s/.*(Season \d)/$1 ใช้ได้กับโฟลเดอร์เท่านั้นไม่ใช่ไฟล์ ฉันควรจะพูดถึงว่านี่เป็นโฟลเดอร์ย่อยประมาณ 50+ รายการดังนั้นจึงต้องเริ่มที่/media/Expansion2/Series/ระดับและดูในแต่ละซีรีย์ :)

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