我想要删除目录中每个文件的第一行,并将相应的输出保存为在文件名末尾添加“.tmp”的新文件。例如,如果有一个名为
我想在同一目录下创建一个名为
问题在于,它没有将输出写入带有
input.txt
的文件,内容如下:line 1
line 2
我想在同一目录下创建一个名为
input.txt.tmp
的文件,其内容如下:line 2
我正在尝试运行这个命令:
find . -type f | xargs -I '{}' tail -n +2 '{}' > '{}'.tmp
问题在于,它没有将输出写入带有
.tmp
后缀的单独文件中,而是只创建了一个名为 {}.tmp
的单个文件。我理解这是因为输出重定向是在 xargs
完全完成后执行的。但有没有办法告诉 xargs
输出重定向是其参数的一部分呢?
find
运行'sh -c'是危险的。在运行上述命令之前,请尝试使用touch 'foo; echo Naughty naughty - I could have removed a file'
。 - Ole Tange