xyz[n]
拡張子が拡張子の複数のファイルの名前を変更しようとしていますxyz
例 :
mv *.xyz[1] to *.xyz
しかし、エラーは次のように発生します-" *.xyz No such file or directory"
* を使用して mv が直接機能するかどうかはわかりませんが、これは機能します
find ./ -name "*.xyz\[*\]" | while read line
do
mv "$line" ${line%.*}.xyz
done
以下に示すようなファイルがあるとしましょう。これらのファイルから -(ab...) の部分を削除したいと思います。
> ls -1 foo*
foo-bar-(ab-4529111094).txt
foo-bar-foo-bar-(ab-189534).txt
foo-bar-foo-bar-bar-(ab-24937932201).txt
したがって、予想されるファイル名は次のようになります。
> ls -1 foo*
foo-bar-foo-bar-bar.txt
foo-bar-foo-bar.txt
foo-bar.txt
>
以下は簡単な方法です。
> ls -1 | nawk '/foo-bar-/{old=$0;gsub(/-\(.*\)/,"",$0);system("mv \""old"\" "$0)}'
詳しい説明はこちら
StringSolverの自動ツールを使用した別の方法を次に示します。最初のファイルabc.xyz[1]
に 2 番目def.xyz[1]
と 3 番目の名前が付けられているとしますghi.jpg
(前の 2 つの拡張子とは異なります)。
まず、例を挙げて必要なファイルをフィルタリングします (ok と notok は、受け入れられるファイルを最初に説明する任意の単語です)。
filter abc.xyz[1] ok def.xyz[1] ok ghi.jpg notok
次に、作成したフィルターを使用して移動を実行します。
mv abc.xyz[1] abc.xyz
mv --filter --all
2 行目は、 で終わるすべてのファイルの最初の変換を一般化します.xyz[1]
。
最後の 2 行は、移動を実行してすぐに一般化する 1 行に短縮することもできます。
mv --filter --all abc.xyz[1] abc.xyz
免責事項: 私は学術目的でこの作品の共著者です。他の例はyoutubeで入手できます。