私は「www.google.comを置き換えますしたい、そして、この私はスクリプトで複数20kのファイルの名前を変更したいのですが、それが失敗した:「引数リストが長すぎる」
for((i=0;i<20000;i++)
do
touch "www.google.com electronic&information this is bash test ${date} .txt"
done
でこれらのファイルを作成"から" HNSD "に変更されます。は20kファイルで、すべてのファイル名に空白が含まれています。
私の最初の試みは、以下の通りであった:
rename 's/www.google.com/HNSD/g' *
...しかし、これは "引数リストが長すぎる" エラーを生じました。
私の第二の試みは、以下の通りである。
#!/bin/bash
function _rename()
{
while read line1; do
#rename 's/www.google.com/HNSD/g' $line1
sed -i "s/www.google.com/HNSD/g" $line1
#echo $line1
done
}
ls -1 | _rename
...しかし、これは与えられたファイルの名前を変更しません。これはどのように行うべきですか?
'LSを使用しないでください-1'スクリプトで。その前に 'IFS ='を付けずに 'read'を使い、その後に' -r'引数を使用しないでください。引用符で囲まれていない引数は使用しないでください。また、引数リストが長すぎる場合(例えば、 'sed'のような)単一の行として渡された1行に収まるよりも長い引数リストを持たない限り、エラーをどのように受け取るのかははっきりしません。エラーは個々の外部コマンドのargvに基づいています。 –
'sed -i'はファイルの名前を変更しません。むしろ内容が変化するので、このスクリプトがあなたの目標をどのように達成するのかは不明です。 –
また、 'function'キーワードを使用しないでください。互換性のある構文よりも利点を追加することなく、コードがPOSIX shと互換性がなくなります。 –