我在终端中使用awk时遇到问题。 我需要将组中的许多文件从实际目录移动到另一个目录,并在文本文件中列出必要的文件,如下所示:
filename.txt
file1
file2
file3
...
我通常数字:
paste filename.txt | awk '{print "mv "$1" ../dir/"}' | sh
并执行:
mv file1 ../dir/
mv file2 ../dir/
mv file3 ../dir/
它通常有效,但现在命令改变了它的行为并且awk覆盖了第一个字符串../dir/
,从初始位置再次开始打印命令,获得:
../dire1 ../dir/
../dire2 ../dir/
../dire3 ../dir/
当然无法执行。 发生了什么? 我该如何解决?
答案 0 :(得分:2)
您的输入文件包含回车符(\r
又名control-M
)。在运行UNIX工具之前在其上运行dos2unix
。
idk你正在使用什么粘贴,但你根本不应该使用awk,这只是一个简单的shell脚本的工作,例如在您对此进行测试后删除echo
:
$ < file xargs -n 1 -I {} echo mv "{}" "../dir"
mv file1 ../dir
mv file2 ../dir
mv file3 ../dir