Score:0

ลบสตริงวันที่ของวันนี้ออกจากชื่อไฟล์ทั้งหมดในโฟลเดอร์

ธง cn
Pad

ฉันมีโฟลเดอร์ที่เต็มไปด้วย jpeg ที่จัดรูปแบบดังนี้:

0001_20210516_XYZ.jpg
0002_20210516_XYZ.jpg
123_20210516_XYZ.jpg
01_20210516_XYZ.jpg

และฉันต้องการเปลี่ยนชื่อไฟล์ทั้งหมดเพื่อให้สตริงวันที่ตรงกลางถูกลบออก ดังนั้นไฟล์จึงมีลักษณะดังนี้:

0001_XYZ.jpg
0002_XYZ.jpg
123_XYZ.jpg
01_XYZ.jpg

ฉันลองใช้ คำตอบนี้ ในการเขียน regex เพื่อลบ 8 หลักโดยใช้รหัสนี้:

เปลี่ยนชื่อ - 's/^_\d{8}\_//' *

แต่สิ่งนี้ไม่ได้ทำอะไรเลย ฉันไม่แน่ใจว่าจะจัดรูปแบบนี้อย่างไรให้ถูกต้อง ดังนั้นสตริงวันที่ตรงกลางจึงถูกลบออก

Score:3
ธง hr

การลบเครื่องหมายขีดล่างตัวแรกและตัวเลข 8 หลักตามหลังโดยใช้ Perl-based เปลี่ยนชื่อ (อาคา ไฟล์เปลี่ยนชื่อ) คุณต้องทิ้งจุดยึดจุดเริ่มต้นของบรรทัด ^และเครื่องหมายขีดล่างที่สอง (มิฉะนั้น คุณจะจบลงด้วย 0001XYZ.jpg เป็นต้น)

ดังนั้น:

เปลี่ยนชื่อ -n 's/_\d{8}//' *_*_*.jpg

หรือคุณสามารถใช้ mmv (จากแพ็คเกจ Ubuntu ที่มีชื่อเดียวกัน):

mmv -n '*_*_*.jpg' '#1_#3.jpg'

ไม่ว่าในกรณีใด -น มีไว้สำหรับการทดสอบ - ลบออกเมื่อคุณพอใจกับการเปลี่ยนแปลงที่เสนอ

หากคุณติดอยู่กับเวอร์ชันการเปลี่ยนชื่อจาก util-ลินุกซ์ (ซึ่งติดตั้งเป็น เปลี่ยนชื่อ.ul ในระบบของฉัน) ดังนั้นวิธีที่ดีที่สุดที่คุณจะทำได้คือจับคู่สตริงตามตัวอักษร _20210516:

rename.ul -vn _20210516 '' *_*_*.jpg

ถ้าจำเป็นต้องถอดจริงๆ วันนี้ วันที่คุณสามารถสรุปได้ว่า

rename.ul -vn "_$(วันที่ +%Y%m%d)" '' *_*_*.jpg

(สังเกตว่า rename.ul จาก util-linux 2.34 ทำ สนับสนุน ก -น ตัวเลือกที่ฉันใช้ที่นี่เพื่อวัตถุประสงค์ในการสาธิต - ปรับตามหากเวอร์ชันของคุณไม่มี)

Pad avatar
cn flag
Pad
สิ่งนี้ทำให้ฉันมีข้อผิดพลาด `เปลี่ยนชื่อ: ตัวเลือกที่ไม่ถูกต้อง -- 'n' การใช้งาน: เปลี่ยนชื่อไฟล์แทนที่นิพจน์ [ตัวเลือก] ... ตัวเลือก: -v, --verbose อธิบายสิ่งที่กำลังทำอยู่ -s, --symlink ทำหน้าที่กับเป้าหมาย symlink -h, --help แสดงความช่วยเหลือนี้และออก -V, --version ข้อมูลเวอร์ชันเอาต์พุตและทางออก สำหรับรายละเอียดเพิ่มเติม โปรดดูเปลี่ยนชื่อ(1) ` และเมื่อฉันเรียกใช้โดยไม่มี -n ชื่อไฟล์ของฉันจะไม่เปลี่ยนแปลง :(
hr flag
@Pad ในกรณีนั้น การใช้งาน `rename` ที่คุณใช้ไม่ใช่สิ่งที่ฉันคุ้นเคย - คำตอบของฉันใช้กับ Perl-based ที่บางครั้งเรียกว่า `file-rename'
Pad avatar
cn flag
Pad
ไม่มีปัญหา เมื่อฉันทำ -V ฉันจะได้รับ `เปลี่ยนชื่อจาก util-linux 2.23.2` ขอบคุณสำหรับความช่วยเหลือของคุณ! ฉันจะพยายามต่อไป
hr flag
@Pad ฉันได้เพิ่มตัวเลือกอื่น ๆ ที่อาจเหมาะกับคุณมากขึ้น
cn flag
หรือที่เรียกว่า [`prename`](https://manpages.ubuntu.com/manpages/focal/en/man1/prename.1p.html)
Pad avatar
cn flag
Pad
@steeldriver ขอบคุณ - มันทำงานได้อย่างสมบูรณ์แบบ `rename -v "_$(date +%Y%m%d)" '' *_*_*.jpg `

โพสต์คำตอบ

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