5

xyz[n]拡張子が拡張子の複数のファイルの名前を変更しようとしていますxyz

例 :

mv *.xyz[1] to *.xyz

しかし、エラーは次のように発生します-" *.xyz No such file or directory"

4

4 に答える 4

5

* を使用して mv が直接機能するかどうかはわかりませんが、これは機能します

find ./ -name "*.xyz\[*\]" | while read line
do 
mv "$line" ${line%.*}.xyz
done
于 2012-12-20T08:13:02.220 に答える
2

以下に示すようなファイルがあるとしましょう。これらのファイルから -(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)}'

詳しい説明はこちら

于 2013-01-10T06:33:05.343 に答える
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で入手できます。

于 2014-03-13T14:46:45.130 に答える