名前に複数の拡張子を含むファイルがあります。
$ ls -r
File1_345.R.12345
File1_3.234.R.6789
File1_2345.R.2345
File1_12345.R.12345
$
既存の拡張子をすべて削除してに変更するには、名前を変更する必要があります.txt
。出力は次のとおりです。
$ ls -r
File1_345.txt
File1_3.txt
File1_2345.txt
File1_12345.txt
findおよびxargsコマンドを使用できますか?
答え1
すべての拡張機能(以降のすべての項目)を削除する場合最初点)各ファイル名から
$ for f in *
do
mv -- "$f" "${f%%.*}.txt"
done
もちろん、本当にこの作業を一行にしたい場合は、上記の内容を折りたたんでください。
$ for f in *; do mv -- "$f" "${f%%.*}.txt"; done
答え2
GNU Parallelを使用してこれを行うことができます。
find ... | parallel mv {} '{=s/\..*//=}'.txt
答え3
rename
これらの作業には、このツール(UbuntuのLarry Wallなど)を使用することをお勧めします。
rename --verbose 's/\..*$/.txt/' File*
# replaces everything after the first dot.
または、より具体的な正規表現を使用してください。's/\.R\.[0-9]+$/.txt/'