私は現在、このスクリプトを $1 $2 に設定しています。これは、拡張子とファイル名の 2 つの入力を取り、相対パスでファイル名を検索し、見つかった場合はファイルを新しい拡張子に置き換えます (または、同じ拡張子)、見つからない場合は、エラー メッセージを出力します。
#!/bin/csh
set ext="$1"
set oldName="$2"
if (-r "$oldName") then
set newName=`echo "$oldName" | sed 's/\.[A-Za-z0-9]*$/'".$ext"'/g'`
if ( "$oldName" == "$newName" ) then
:
else
mv "$oldName" "$newName"
endif
else
echo "$oldName": No such file
endif
必要なのは、このスクリプトを変更して、$1 が常に拡張子になるようにすることですが、$2 は任意の数の可能な入力にできるようにすることです。次に例を示します。
./chExt.sh 'bat' 'bool.com' 'nofilefound.biz' 'james.bro'
そして本質的に作るだろう
bool.bat
nofilefound.biz: No such file
james.bat
そのため、常に $1 を拡張子として読み取り、元のスクリプトと同じプロセスを適用する必要があると常に $2-$n を認識します。
特に「foreach」と「shifts」を使用する必要があります。