私のディレクトリには/var/tmp/abc
4つのファイルがあります。
12345-ram-3e3r5-io9490-89adu9.csv
45434-dam-qwe35-to9490-43adu9.csv
11234-cam-yy3r5-ro9490-85adu9.csv
14423-sam-hh3r5-uo9490-869du9.csv
すべてのCSVファイルの名前を最も短い方法(おそらく1行)に変更したい(すべてのファイルを見つけて名前を変更する)。
XXXXX-ram-3e3r5-io9490-89adu9.csv
XXXXX-dam-qwe35-to9490-43adu9.csv
XXXXX-cam-yy3r5-ro9490-85adu9.csv
XXXXX-sam-hh3r5-uo9490-869du9.csv
答え1
rename -n 's/(\w+)/XXXXX/' *.csv
満足のいくものを削除してください-n
。
答え2
努力する:
for f in *.csv; do mv -i -- "$f" "XXXXX-${f#*-}"; done
仕組み:
for f in *.csv; do
これにより、すべてのファイルに対してループが開始されます
*.csv
。mv -i -- "$f" "XXXXX-${f#*-}"
必要に応じてファイルの名前を変更し、ファイルを上書きする前に対話形式で尋ねます。
done
これはサイクルの終わりを示します。
例:
$ ls -1
11234-cam-yy3r5-ro9490-85adu9.csv
12345-ram-3e3r5-io9490-89adu9.csv
14423-sam-hh3r5-uo9490-869du9.csv
45434-dam-qwe35-to9490-43adu9.csv
$ for f in *.csv; do mv -i -- "$f" "XXXXX-${f#*-}"; done
$ ls -1
XXXXX-cam-yy3r5-ro9490-85adu9.csv
XXXXX-dam-qwe35-to9490-43adu9.csv
XXXXX-ram-3e3r5-io9490-89adu9.csv
XXXXX-sam-hh3r5-uo9490-869du9.csv
答え3
すべてのファイルが5つの数字で始まると仮定するので、次のようにします。切り取りコマンド初期番号ファイルを「XXXXX」に置き換えます。
以下はコマンド前のファイルです。
-rw-rw-r--. 1 daniel daniel 0 May 13 23:18 11111_bar_file.csv
-rw-rw-r--. 1 daniel daniel 0 May 13 22:54 12345_baz_file.csv
-rw-rw-r--. 1 daniel daniel 0 May 13 22:54 67890_foo_file.xml
以下は1行のコマンドです。
for src in *.csv; do dst=XXXXX$(echo $src| cut -c6-); mv $src $dst; done;
以下はコマンドの後のファイルです。
-rw-rw-r--. 1 daniel daniel 0 May 13 22:54 67890_foo_file.xml
-rw-rw-r--. 1 daniel daniel 0 May 13 22:54 XXXXX_bar_file.csv
-rw-rw-r--. 1 daniel daniel 0 May 13 23:18 XXXXX_baz_file.csv
引用:
答え4
フォークがない場合:
ls | perl -lne '$suf=substr($_,6); rename $_, "XXXXX-$suf"'
シェルループを使用すると、mv
各ファイルが一度分岐します。 Perlrename
コマンドはそうではありません。
(Perlの名前変更コマンドにはいくつかの制限がありますが、この特別な場合には適用されません。)
前述のコマンドはrename
そうです。動作しますが、2つの異なる名前変更タイプの間に混乱が生じる可能性があります。正しいものがあれば良いですが、そうでない場合でも効果があります。
perl-rename コマンドがなく、インストールできない場合は、次のことができます。
ls | perl -lne '$old=$_; s/(\w+)/XXXXX/; rename $old, $_'
ご覧のとおり、これは最上位の回答に示されているものと同じ置換を使用します。もちろん、perl-renameには他のアドオンもあります(-n
上の答えですでに述べたように、、、-0
など-f
があります)。必要に応じてスクロールするのではなく、この方法でインストールする必要があります。