ล้างชื่อไฟล์ดาวน์โหลดให้ยุ่ง


1

บางครั้ง wget Aev264-yale_econ2521120.m4v?bri=40.1&brs=689หยิบพารามิเตอร์พิเศษเมื่อดาวน์โหลดไฟล์ตัวอย่าง

Aev264-yale_econ2521120.m4vเห็นได้ชัดว่าทั้งหมดที่ฉันต้องการคือ

ฉันแหย่หน้าคนและไม่เห็นอะไรที่โดดเด่นที่จะแก้ไขปัญหานี้ ความคิดใด ๆ

คำตอบ:


3

หากคุณกำลังดาวน์โหลดไฟล์เดียวในเวลาที่คุณสามารถใช้-Oตัวเลือกซึ่งทำหน้าที่ชนิดเช่นการเปลี่ยนเส้นทางเปลือกสำหรับข้อมูลที่ดาวน์โหลด

มิฉะนั้นbashตัวอย่างนี้ควรดูแลแก้ไขชื่อไฟล์ในภายหลัง:

for f in *\?*; do
    mv "$f" "${f%%\?*}"
done

1

ในฐานะที่เป็นโซลูชันทั่วไปมากขึ้นสคริปต์การเปลี่ยนชื่อที่น่านับถือก็ใช้งานได้ดี:

 $ rename 's/m4v.*$/m4v/' Aev264*.m4v*

ฉันค่อนข้างแน่ใจว่ามันถูกติดตั้งไว้แล้วใน/usr/binการแจกแจงเดเบียน / อูบุนตู / มิ้นท์และเป็นสคริปต์บรรทัดที่ 42 ถ้ามันไม่ได้ติดตั้ง (จริง ๆ แล้วมันเป็น Perl ดังนั้นมันเป็นเพียงหนึ่งบรรทัดถ้าคุณไม่ได้อยู่ในสิ่งที่อ่านง่ายทั้งหมด )

$ squish /usr/bin/rename
use strict; use Getopt::Long; Getopt::Long::Configure('bundling'); my ($verbose, $no_act, $force, $op); die "Usage: rename [-v] [-n] [-f] perlexpr [filenames]\n" unless GetOptions( 'v|verbose' => \$verbose, 'n|no-act' => \$no_act, 'f|force' => \$force, ) and $op = shift; $verbose++ if $no_act; if (!@ARGV) { print "reading filenames from STDIN\n" if $verbose; @ARGV = <STDIN>; chop(@ARGV); } for (@ARGV) { my $was = $_; eval $op; die $@ if $@; next if $was eq $_; if (-e $_ and !$force) { warn "$was not renamed: $_ already exists\n"; } elsif ($no_act or rename $was, $_) { print "$was renamed as $_\n" if $verbose; } else { warn "Can't rename $was $_: $!\n"; } }
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.