从主目录(包含几个子目录),我想要cd到以* bk结尾的所有目录,并做三件事:
$1 = ls *enp
$2 = grep "Start time" *initial.rpt
$3 = grep "Stop time" *ending.rpt
我希望输出组合在同一行上的所有3个组件:
1. Bill.enp 12:00 14:30
2. Barb.enp 15:00 15:30
3. Brad.enp 16:00 17:30
4. Buck.enp 18:00 19:00
5. Burt.enp 19:30 21:00
任何帮助将不胜感激!
答案 0 :(得分:1)
使用这些值,您需要paste
命令。
如果这些文件分为三个文件:paste out1 out2 out3
如果这些变量有三个变量:paste <(echo "$s1") <(echo "$s2") <(echo "$s3")
答案 1 :(得分:0)
Iff命令
ls *enp
grep "Start time" *initial.rpt
grep "Stop time" *ending.rpt
所有这些都给予相同数量的行,并且行总是按照正确的顺序排列,您可以使用以下脚本(归功于Etan Reisner,原始提及process substitution)
for d in *.bk ; do
if [ -d $d ] ; then
cd $d
paste -d\\t <(ls *enp) <(grep "Start time" *initial.rpt) <(grep "Stop time" *ending.rpt)
cd -
done
我使用制表符作为paste
命令的分隔符,默认为空格。