บางครั้ง wget Aev264-yale_econ2521120.m4v?bri=40.1&brs=689
หยิบพารามิเตอร์พิเศษเมื่อดาวน์โหลดไฟล์ตัวอย่าง
Aev264-yale_econ2521120.m4v
เห็นได้ชัดว่าทั้งหมดที่ฉันต้องการคือ
ฉันแหย่หน้าคนและไม่เห็นอะไรที่โดดเด่นที่จะแก้ไขปัญหานี้ ความคิดใด ๆ
บางครั้ง wget Aev264-yale_econ2521120.m4v?bri=40.1&brs=689
หยิบพารามิเตอร์พิเศษเมื่อดาวน์โหลดไฟล์ตัวอย่าง
Aev264-yale_econ2521120.m4v
เห็นได้ชัดว่าทั้งหมดที่ฉันต้องการคือ
ฉันแหย่หน้าคนและไม่เห็นอะไรที่โดดเด่นที่จะแก้ไขปัญหานี้ ความคิดใด ๆ
คำตอบ:
หากคุณกำลังดาวน์โหลดไฟล์เดียวในเวลาที่คุณสามารถใช้-O
ตัวเลือกซึ่งทำหน้าที่ชนิดเช่นการเปลี่ยนเส้นทางเปลือกสำหรับข้อมูลที่ดาวน์โหลด
มิฉะนั้นbash
ตัวอย่างนี้ควรดูแลแก้ไขชื่อไฟล์ในภายหลัง:
for f in *\?*; do
mv "$f" "${f%%\?*}"
done
ในฐานะที่เป็นโซลูชันทั่วไปมากขึ้นสคริปต์การเปลี่ยนชื่อที่น่านับถือก็ใช้งานได้ดี:
$ 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"; } }