在 unix 中结合 paste 和 cat
Combining paste and cat in unix
我有这个名称格式的文件:
<name1>.<name2>.<id>.ERR
其中 name1
和 name2
是 character
string
和 id
是一个数字,这三个对于每个文件都是唯一的。 (这些是来自 slurm
运行 的标准输出文件,id
是作业 ID)。
我想知道这些作业是否失败了,所以我想从每个文件名中 cut
'ing id
:
ls -1 *.ERR | cut -d "." -f 3
然后在前面粘贴"sacct -j "
。
是否有一个衬板可以实现这一点,以便 运行s:
sacct -j id
1
sacct -j id
2
.
.
sacct -j id
n
类似于:
for id in $(ls *.ERR | cut -d "." -f 3); do echo "machine: $id"; done
如果文件不是很多(几千个)就可以了。将 echo blah blah 替换为 sacct -j,如下所示:
for id in $(ls *.ERR | cut -d "." -f 3); do sacct -j $id; done
还有其他方法。
您可以简单地使用 xargs
:
ls -1 *.ERR | cut -d "." -f 3 | xargs -L 1 sacct -j
您可以 运行 与 -P
选项并行,以减轻查询数据库的延迟。
ls -1 *.ERR | cut -d "." -f 3 | barges -P 4 -L 1 sacct -j
我有这个名称格式的文件:
<name1>.<name2>.<id>.ERR
其中 name1
和 name2
是 character
string
和 id
是一个数字,这三个对于每个文件都是唯一的。 (这些是来自 slurm
运行 的标准输出文件,id
是作业 ID)。
我想知道这些作业是否失败了,所以我想从每个文件名中 cut
'ing id
:
ls -1 *.ERR | cut -d "." -f 3
然后在前面粘贴"sacct -j "
。
是否有一个衬板可以实现这一点,以便 运行s:
sacct -j id
1
sacct -j id
2
.
.
sacct -j id
n
类似于:
for id in $(ls *.ERR | cut -d "." -f 3); do echo "machine: $id"; done
如果文件不是很多(几千个)就可以了。将 echo blah blah 替换为 sacct -j,如下所示:
for id in $(ls *.ERR | cut -d "." -f 3); do sacct -j $id; done
还有其他方法。
您可以简单地使用 xargs
:
ls -1 *.ERR | cut -d "." -f 3 | xargs -L 1 sacct -j
您可以 运行 与 -P
选项并行,以减轻查询数据库的延迟。
ls -1 *.ERR | cut -d "." -f 3 | barges -P 4 -L 1 sacct -j