我的目录/foo/bar/
中有几百个文件。我只想grep不以Not
开头的文件列表,但以.vcf
结尾。
我在下面的代码中选择以.vcf
结尾的所有文件,但我只想将这个bash代码循环到文件(A_test.chr1.vcf
,B_test.chr2.vcf
和C_test.chr3.vcf
上)来自/foo/bar/
中的文件。
for i in /foo/bar/*.vcf;do
do something
done
/foo/bar/
A_test.chr1.vcf
B_test.chr2.vcf
C_test.chr3.vcf
A_test.chr4.other
Not_other.chr4.other
Not1_test.chr1.vcf
Not2_test.chr2.vcf
答案 0 :(得分:0)
或者:
find /foo/bar -type f \( ! -name "Not*" -iname "*.vcf" \) | xargs DoSomething
或
find /foo/bar -type f \( ! -name "Not*" -iname "*.vcf" \) -exec DoSomething {} \;
语法:
for i in $(find /foo/bar -type f \( ! -name "Not*" -iname "*.vcf" \); DoSomething; done
也可以,但如果你的文件在文件名中有空格,那就太危险了。
基本上所有东西都基于find命令。
mkdir -p foo/bar
cd foo/bar/
touch A_test.chr4.vcf A_test.chr4.other Not_other.chr4.other Not1_test.chr1.vcf
cd ../..
find foo/bar/ -type f \( ! -name "Not*" -iname "*.vcf" \)
结果是:
./A_test.chr4.vcf
答案 1 :(得分:-2)
尝试下一个:
find ./foo/bar/ -type f -name *.vcf | while read -r line; do echo $line & done;