【发布时间】:2017-01-13 23:52:30
【问题描述】:
我一直在尝试 xargs 和管道的各种组合,但我无法得到正确的结果。以前的问题并没有完全涵盖我想要做什么:
- 我在某处有一个源目录,比如说 /foo/source,其中混合了不同的文件
- 我只想将在源中找到的 csv 文件复制到其他目标,例如 /foo/dest
- 但我还需要同时删除 232 个标题行(例如使用尾部)
我发现我需要将 find 的结果通过管道传输到 xargs 中,然后 xargs 可以对每个 find 结果运行命令。但我正在努力追尾然后复制。如果我通过管道将 tail 导入 cp,cp 似乎没有接收到文件(缺少文件操作数)。以下是我迄今为止尝试过的一些示例:
find /foo/source -name "*.csv" | xargs -I '{}' sh -c 'tail -n +232 | cp -t /foo/dest'
cp: 缺少文件操作数
find /foo/source -name "*.csv" | xargs -I '{}' sh -c 'tail -n +232 {} | cp -t /foo/dest'
结果:
cp: 无法访问'/foo/dest': 没有这样的文件或目录...
find /foo/source -name "*.csv" | xargs -I '{}' sh -c 'tail -n +232 {} > /foo/dest/{}'
sh: /foo/dest/foo/source/0001.csv: 没有这样的文件或目录...
任何指针将不胜感激!
谢谢
【问题讨论】:
标签: linux bash find tail xargs