使用ls在每个子目录

时间:2017-07-31 13:54:03

标签: bash

我创建了这个小小的Python脚本 Essai_Bash.py 来进行一些测试:

#!/usr/bin/python

import argparse
import os

parser = argparse.ArgumentParser()
parser.add_argument('-i', action='store', dest='InputDir', help='Working Directory') # Empty folders for outputs.

parser.add_argument('--version', action='version', version='%(prog)s 0.1')

results = parser.parse_args()
print 'Current input directory      =', results.InputDir

dir_path=str(os.path.abspath(results.InputDir)) # Retrieving an output folder name to use as species ID:
path,CodeSp = os.path.split(dir_path)

print "Currently working on species:      "+str(CodeSp)

回到我的shell,我输入以下命令,期望我的脚本在我的" Essai_Bash"中出现的每个目录上运行。文件夹:

listdir='ls ../Main_folder/' # I first used backtips instead of simple quotes but it did not work.
for dir in $listdir; do ./Essai_Bash.py -i ../Main_folder/$dir; done

我肯定错过了一些明显的东西,但它不起作用。似乎$ listdir被视为字符串而不是目录列表。但是,只需在我的shell中键入$listdir实际上就会给我这个列表!

1 个答案:

答案 0 :(得分:2)

只需使用glob扩展,解析ls输出是不安全的。 此外,dir变量已包含../Main_folder/

listdir=( ../Main_folder/*/ )
for dir in "${listdir[@]}"; do ./Essai_Bash.py -i "$dir"; done