次の形式のファイルが複数あります。 (ファイルは一般的ではない各ファイル名に対応します。)
File1_S20.tab
File2_S25.tab
File3_S40.tab
etc.
私はそれらの名前をすべて変更して、次のようにしたいと思います。
File1
File2
File3
etc.
デフォルトでは、_S$$.tab
すべてのファイルからそのセクションを削除します。
ファイル名を変更するには、通常、次の名前変更コマンドを使用します。 (にrename # somethingelse *.tab
置き換えられます)#
somethingelse
しかし、私が経験している唯一の問題は、各ファイルがS
。
ベストアンサー1
rename
簡単に曲げないutil-linuxバージョンを使用しているようです。というPerlベースのツールもありますrename
(参照:「名前変更」と「mv」の違いは何ですか?)
Perlを使用して名前を変更すると、簡単に入手できます(または追加して-n
実行することを確認してください)。
rename 's/_S\d+\.tab//' File*.tab
(Perlで名前変更ループを実装するのは比較的簡単ですが、正確かつ安全に実装するには数行のコードが必要です。)
ただし、シェルのループを介してこれを行うことはできます。
for f in File*.tab; do
mv -n -- "$f" "${f%%_S[0-9][0-9].tab}"
done
("${f%%_S*.tab}"
2つの数字の代わりに任意の数字を一致させるか、shopt -s extglob
Bashで使用して"${f%%_S+([0-9]).tab}"
そこにある任意の数字を一致させます。)