13

ubuntuマシンにa1.txt、b1.txt、c1、txt ...という名前のファイルがいくつかあります。

すべてのファイル名を a2.txt、b2.txt、c2.txt に変更する簡単な方法はありますか?

特に、名前の文字列の一部を置き換えたいと考えています。たとえば、すべてのファイル名に「apple」という文字列が含まれており、すべてのファイル名で「apple」を「pear」に置き換えたいとします。

コマンドまたはスクリプトはありますか?

4

6 に答える 6

25

追加のソフトウェアなしで次のことができます。

for FILE in *1.txt; do mv "$FILE" $(echo "$FILE" | sed 's/1/2/'); done
于 2011-08-08T17:17:24.673 に答える
4
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 で動作するはずです。

于 2011-08-08T17:27:11.583 に答える
2

次のコマンドは、指定されたファイルの名前の最初の出現箇所を に置き換えて名前を変更し1ます2

rename 1 2 *1.txt
于 2011-08-08T17:17:51.380 に答える
0
ls *1.txt | perl -ne 'chomp; $x = $_; $x =~ s/1/2/; rename $_, $x;'
于 2011-08-08T17:17:25.893 に答える
-1

このようなものが動作するはずです:

for i in *1.txt; do
    name=$(echo $i | cut -b1)
    mv $i ${name}2.txt
done

必要に応じて変更します。

于 2011-08-08T17:17:53.643 に答える