1行のコマンドを使用して複数のファイル拡張子を変更します。

1行のコマンドを使用して複数のファイル拡張子を変更します。

名前に複数の拡張子を含むファイルがあります。

$ 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/'

関連情報