根据 bash 脚本中的名称有选择地创建文件夹
Selectively create folders based on names in bash script
我有几个文件如下:
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;
但这显然会创建具有全名的文件夹。
像这样。
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。
我有几个文件如下:
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;
但这显然会创建具有全名的文件夹。
像这样。
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。