17

system()awk と関数を使用して、いくつかのディレクトリを移動したいと考えています。

次のように編成されたawk名前で処理したいファイルがあります。file.cfg

/path1 /path2 
/some_path /some_other_path 
and so on..

最初のパスはそれぞれ、2 番目のパスから空白で区切られているので、次のようにしました。

awk '{system(mv -R $1" "$2)}' file.cfg

しかし、それは機能せず、私は得ます

sh: 0/home/my_user/path1: No such file or directory

しかし、file.cfg次のようになります。

/home/my_user/path1 /home/my_user/path2

の前に 0 はありません/home。それで、私はここで何が欠けていますか?

4

2 に答える 2

30

あなたが与えるコマンドを引用する必要がありますsystem

awk '{system("mv -R " $1 " " $2)}' file.cfg

現在、どちらも定義されていないためmv -R、変数 mv の値から R の値を引いたものとして解釈されます。0

于 2013-04-04T23:14:31.960 に答える
7

なぜ xargs を使用しないのですか?

cat file.cfg | xargs -n 2 mv

これにより、トークンが (空白で区切られて) ファイルから mv に 2 つのグループで渡されます。

于 2013-04-04T23:09:02.623 に答える