我想使用name-last.txt文件在以前的目录中调用另外几个名称属于文件名字符串的文件:
例如,对于Perez-Castillo.txt,我想使用:(1)Perez-Castillo.txt中的grep,(2)Perez.list中的grep和(3)Castillo.list中的grep。
我有这个部分:
for i in *.txt;
do
wc -l $i > out1.txt
grep -c "something" ../${i%-*}.list > out2.txt
grep -c "something" ../${i#*-}.list > out3.txt
done;
但是,我没有打电话,即 Castillo.list ,因为我的脚本正在调用 Castillo.txt.list
有什么建议吗?
答案 0 :(得分:2)
Bash不允许您将两个转换嵌套到单个参数扩展中,因此无法通过参数扩展删除前缀和后缀。
所以最简单的方法是在开头删除.txt
扩展名:
for i in *.txt; do
pfx=${i%.txt}
wc -l "${pfx}.txt" > out1.txt
grep -c "something" "../${pfx%-*}.list" > out2.txt
grep -c "something" "../${pfx#*-}.list" > out3.txt
done;