我想使用awk和system()
函数来移动几个目录。
我想要使用awk
名称file.cfg
处理我要处理的文件,该文件按以下方式组织:
/path1 /path2
/some_path /some_other_path
and so on..
每个第一个路径通过空格与第二个路径分开 所以我就是这样做的:
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
并且/home
之前没有0。那我在这里错过了什么?
答案 0 :(得分:21)
您必须引用您提供给system
的命令:
awk '{system("mv -R " $1 " " $2)}' file.cfg
当前mv -R
被解释为变量mv的值减去R的值,即0
,因为两者都没有定义。
答案 1 :(得分:5)
为什么不使用xargs?
cat file.cfg | xargs -n 2 mv
这会将你的文件中的标记(用空格分隔)传递给mv,每组两个。