我有 23 个文件夹,每个文件夹都有两个子文件夹(始终同名),每个子文件夹恰好有两个文件(始终同名)。因此它看起来像这样:
Folder1/BindingDB/chiral.smi
nochiral.smi
Folder1/Xray/chiral.smi
nochiral.smi
Folder2/BindingDB/chiral.smi
nochiral.smi
Folder2/Xray/chiral.smi
nochiral.smi
例如chiral.smi
文件如下所示:
COCCNC(=O)[C@H]1[C@@H]([C@H]2CN3C(=O)C=CC=C3[C@@H]1N2C4=NC(=C(S4)C5=CC=CC=C5)C6=CC=C(C=C6)Cl)CO K00000004
C1[C@H]2[C@H](C=C([C@H]3[C@@H]2[C@H]4[C@@H]1[C@@H]([C@H]4C=C3)CC/C=C/CC5=CC=C(C=C5)O)C(=O)O)O K00000005
C[C@]12CCC[C@@]([C@@H]1CC[C@@]34[C@H]2C[C@H]5[C@@H](C3)[C@]5(C4)CO)(C)C(=O)O K00000006
所以这里,最后两行K00000005
有K00000006
双倍空格,我想匹配这两行。
我尝试仔细检查文件夹中的所有chiral.smi
文件nochiral.smi
是否都有双倍空格的行(每个文件的每一行应该只有一个空格)。
我曾在 bash 中尝试过这样的事情:
for i in */*/*.smi ; do sed -e "s/\s\{2,\}/ /g" $i; done
但它不起作用。此外,当我sed -e "s/\s\{3,\}/ /g" *smi
在子文件夹(BindingDB 或 Xray)中运行时,它会打印所有只有一个空格的行。有人能帮我吗,因为我搞不清楚问题出在哪里?
答案1
您可以列出名称任何.smi
文件中任何行包含两个相邻空格
grep --include='*.smi' -rl ' ' .
如果您想输出行本身,请删除该l
选项。
答案2
如果我理解正确的话,就像
grep -l ' ' */*/*.smi
将打印“双倍空间”文件名
如果你想要规范化空格(' '
-> ' '
),你可以尝试
sed -ri.bak 's/\s{2,}/ /g' */*/*.smi
如果一切顺利,删除备份文件
rm /*/*.smi.bak