0

あるディレクトリから別のディレクトリにファイルをコピーし、それらに.bak拡張子を追加するスクリプトを作成しようとしています。拡張機能を追加する方法を理解するのに苦労しています。

foreach file in ($argv[1]/*)
    cp $file $argv[2]
end
4

2 に答える 2

1

一連の仮定を立てると(主に、スクリプトのアウトラインが有効なCシェル構文であり、ファイル名のスペースが問題にならないこと)、おそらく次のbasenameコマンドを使用する必要があります。

foreach file in ($argv[1]/*)
    cp $file $argv[2]/`basename $file`.bak
end

このbasenameコマンドはパス名を削除するため、ファイルは。で指定されたディレクトリに正確にコピーされ$argv[2]ます。ディレクトリ階層も保持したい場合は、かなりハードに作業する必要があります。

于 2013-03-19T00:06:58.617 に答える
0

$1と$2は、スクリプトの引数(ディレクトリ)です-:

for f in $1/*
do
    fname=$(basename $f)
    cp $f $2/$fname.bak
done
于 2013-03-18T23:55:40.220 に答える