ubuntuマシンにa1.txt、b1.txt、c1、txt ...という名前のファイルがいくつかあります。
すべてのファイル名を a2.txt、b2.txt、c2.txt に変更する簡単な方法はありますか?
特に、名前の文字列の一部を置き換えたいと考えています。たとえば、すべてのファイル名に「apple」という文字列が含まれており、すべてのファイル名で「apple」を「pear」に置き換えたいとします。
コマンドまたはスクリプトはありますか?
ubuntuマシンにa1.txt、b1.txt、c1、txt ...という名前のファイルがいくつかあります。
すべてのファイル名を a2.txt、b2.txt、c2.txt に変更する簡単な方法はありますか?
特に、名前の文字列の一部を置き換えたいと考えています。たとえば、すべてのファイル名に「apple」という文字列が含まれており、すべてのファイル名で「apple」を「pear」に置き換えたいとします。
コマンドまたはスクリプトはありますか?
追加のソフトウェアなしで次のことができます。
for FILE in *1.txt; do mv "$FILE" $(echo "$FILE" | sed 's/1/2/'); done
for f in {a..c}1.txt; do echo "$f" "${f/1/2}"; done
出力が正しいように見える場合は、「echo」を「mv」に置き換えます。
「apple」を「linux」に置き換えたい
for f in *apple*; do mv "$f" "${f/apple/linux}"; done
1 行目の中括弧は、少なくとも bash で動作するはずです。
次のコマンドは、指定されたファイルの名前の最初の出現箇所を に置き換えて名前を変更し1
ます2
。
rename 1 2 *1.txt
ls *1.txt | perl -ne 'chomp; $x = $_; $x =~ s/1/2/; rename $_, $x;'
このようなものが動作するはずです:
for i in *1.txt; do
name=$(echo $i | cut -b1)
mv $i ${name}2.txt
done
必要に応じて変更します。