5

ディレクトリ ( /path/to/local) にファイル名のリストがあります。これらすべてのファイル名から特定の数の文字を削除したいと思います。

ファイル名の例:

iso1111_plane001_00321.moc1
iso1111_plane002_00321.moc1
iso2222_plane001_00123.moc1

すべてのファイル名で、ファイル拡張子の前の最後の 5 文字を削除したいと考えています。

例えば:

iso1111_plane001_.moc1
iso1111_plane002_.moc1
iso2222_plane001_.moc1

これは を使用して実行できるとsed思いますが、正確なコーディングを特定することはできません。何かのようなもの...

for filename in /path/to/local/*.moc1; do
    mv $filname $(echo $filename | sed -e 's/.....^//');
done

...しかし、それは機能しません。私がオプションを解体した場合は申し訳ありませんがsed、私はそれについてあまり経験がありません。

4

3 に答える 3

0

これはうまくいくかもしれません(GNU sed):

sed -r 's/(.*).{5}\./\1./' file
于 2013-07-19T19:45:11.790 に答える