検索/名前変更コマンドが機能しません。

検索/名前変更コマンドが機能しません。

私はLinux Slackware 14.0、bash 4.2を使用しています。私のディレクトリに2つのファイルがあるとしましょう。

bash-4.2$ ls
1.txt  2.txt

名前を.svgに変更したいです。この回答それが承認され投票されたので、私はそれがうまくいくと思いました。彼は次のコマンドを使用しました。

find . -name "*.andnav" -exec rename -v 's/\.andnav$/\.tile/i' {} \;

だから同様のコマンドを書いたが、エラーが印刷された。

bash-4.2$ find . -name "*.txt" -exec rename -v 's/\.txt$/\.svg/i' {} \;
rename: not enough arguments

ファイルを印刷したいときに機能します。

bash-4.2$ find . -name "*.txt" -print
./1.txt
./2.txt

わかりました。より簡単な方法で名前を変更できます。

bash-4.2$ rename .txt .svg ./*.txt
bash-4.2$ ls
1.svg  2.svg

しかし、なぜ命令が出ないのですか?それ答えは私に役立ちましたか?

答え1

renameLinuxディストリビューションでは、2つのコマンドが呼び出されます。持つ基本的なLinuxユーティリティの1つ、使用法は次のとおりです。

rename SUBSTRING REPLACEMENT FILE...

このコマンドは、指定された各ファイルで最初に表示される SUBSTRING を REPLACMENT に置き換えます。一般的な文字列のみをサポートし、ワイルドカードや正規表現はサポートしません。 Debian およびその派生製品 (Ubuntu、Mint など) では、このコマンドを指しますrename.ul。他のLinuxディストリビューションではそうですrename

まだ一つあります。Perlスクリプトの呼び出しrename使用法は次のとおりです。

rename 'PERL CODE' FILE...

Perlコードの一般的な形式は、rename 's/REGEXP/REPLACEMENT/' FILE...各ファイル名に最初に表示されるREGEXPをREPLACMENT(すべての項目を変更)に置き換えることですs/REGEXP/REPLACEMENT/g

著者はあなたが見る問題彼はUbuntuを実行していることを示したので、彼は受け入れました。この回答renameUbuntuでコマンドを使用してください。

標準renameコマンドに似たコマンドは次のとおりです。

find . -name "*.txt" -exec rename .txt .svg {} \;

bash ≥4のときに使用できます**ワイルドカードパターン設定後globstarオプションを使用せずにサブディレクトリのファイルと一致しますfind

shopt -s globstar
rename .txt .svg **/*.txt

このrenameコマンドは最初の文字列で機能するため、名前という名前のファイルがある場合はhello.txt.world.txt名前がに変わりますhello.svg.world.txt

関連情報