(前)最初と最後の文字を削除して多くのファイルの名前を変更する必要があります.ext
。
エラー>
'1st moto ride [Aug '99]'.mp4
'Samuel' Song'.mp3
'Plane Landing'.avi
'"Ode" (sort of) to the Sun'.pdf
'The Divine Comedy [1308, Alighieri D.]'.txt
'100 ways to jump off the Moon'.wav
'[1979] Ста́лкер'.mkv
右>
1st moto ride [Aug '99].mp4
Samuel' Song.mp3
Plane Landing.avi
"Ode" (sort of) to the Sun.pdf
The Divine Comedy [1308, Alighieri D.].txt
100 ways to jump off the Moon.wav
[1979] Ста́лкер.mkv
ありがとう
答え1
その一重引用符が説明できないls
アーティファクトではなく、実際にはファイル名の一部であるとします。
また、(p)rename(perlユーティリティ)がインストールされているとします。
ls
''\''1st moto ride [Aug '\''99]'\''.mp4'
rename "s/^'//;s/'\.(.*)$/.\$1/" *
ls
'1st moto ride [Aug '\''99].mp4'
この出力では、2番目の出力のファイル名の周りの一重引用符はls
実際にls
アーティファクトです。
ツールと式の説明テキスト。
Perl正規表現を使用します。 for逆参照を除いて、構文はデフォルトでs///
inと同じです。区切られている場合は、1行に複数の式を使用できます。sed
$1
;
つまり、先行を検索し'
て何もないものに置き換えます。次に、'
前のaリテラルを検索し.
、aの後ろのすべての項目をキャプチャし.
、.
aとキャプチャされた部分に一致するすべての項目を置き換えます。
通常、私は一重引用符を使用してPerl REをラップしますが、一重引用符を置き換えようとしているので(そして非常に見苦しいエスケープを試みているので)二重引用符を使用しています。これは$1
、交換部分からエスケープする必要があることを意味します。それ以外の場合は、欠落しているbash変数の空の文字列になります。