在Bash中,如何获取文件对并将它们放入具有匹配名称的目录中?

时间:2016-12-19 19:41:54

标签: bash

我有一堆像这样的文件(目前都在一个目录中,但我可以按文件类型或其他任何内容将它们分开):

Pep_1-1.pdb
Pep_1-1.psf
Pep_1-2.pdb
Pep_1-2.psf
Pep_1-3.pdb
...

我想拿每一对,创建一个具有相应名称的目录,然后将这两个文件放在该目录中(步骤不必按此顺序,我只关心结果),这样我就有了像Pep_1-1,Pep_1-2等目录,每个目录包含两个相应的文件。最有效的方法是什么?

谢谢:)

2 个答案:

答案 0 :(得分:1)

假设文件总是成对存在,最容易迭代其中一个文件并提取名称sans扩展名。

for f in *.pdb; do
    basename=${f%.*}
    mkdir "$basename"
    mv "$f" "$basename.psf" "$basename"
done

答案 1 :(得分:1)

您可以使用var imageSource = eval("require('" + user.imageLoc + "')") <Image source={imageSource} style={s.userPic} /> sed或使用awk但我认为应该通过简单的解决方案来解决简单的问题。这就是我询问您的文件是否始终采用basenamePep_1-#.pdb形式的原因。

只需按如下方式构建for循环:

Pep_1-#.psf

在测试之前始终备份您的目录!