【问题标题】:Selectively create folders based on names in bash script根据 bash 脚本中的名称有选择地创建文件夹
【发布时间】:2021-08-22 17:31:48
【问题描述】:

我有几个文件如下:

dosulepin3D_CID_5284550.pdbqt
protriptyline3D_CID_4976.pdbqt

这些是小分子。现在我想在Results 文件夹中为这些分子中的每一个创建一个文件,忽略它们后面的3D_CID_5284550.pdbqt,并有文件夹:

dosulepin
protriptyline

我想使用 for 循环来执行此操作,因为我还对这些文件执行了一些功能。这就是我所拥有的:

DIR="/home/roy/MolecularDocking/VirtualScreening/Dockings"
cd $DIR
for ligand in ligands/*; do
    echo $ligand
    mkdir "/home/roy/MolecularDocking/Results/$ligand"
done;

但这显然会使用全名创建文件夹。

【问题讨论】:

    标签: bash loops for-loop ubuntu-20.04


    【解决方案1】:

    类似的东西。

    DIR="/home/roy/MolecularDocking/VirtualScreening/Dockings"
    cd "$DIR" || exit
    
    for ligand in ligands/*.pdbqt; do
        echo "$ligand"
        echo mkdir -p "/home/roy/MolecularDocking/Results/${ligand%3D*}"
    done
    

    如果您对输出感到满意,请从 mkdir 中删除 echo。

    更多详情请见Parameter Expansion。

    【讨论】:

    • 谢谢@Jetchisel。这给了我/home/roy/MolecularDocking/Results/ligands/viloxazine。有没有办法得到/home/roy/MolecularDocking/Results/viloxazine
    • 你需要做另一个参数扩展。 ligands=${ligand%3D*}; ligand=${ligand/ligands} 也许。 ; 可以换行。
    猜你喜欢
    • 2021-12-26
    • 1970-01-01
    • 1970-01-01
    • 2021-09-27
    • 1970-01-01
    • 1970-01-01
    • 2021-04-19
    • 2020-11-02
    • 2011-04-09
    相关资源
    最近更新 更多