我有两个文件夹,每个文件夹包含具有相同编号系统的文件,这些文件是文件名的一部分。 例如,
文件夹1有:
001file_read.txt, 002file_read.txt, until 650file_read.txt
文件夹2有:
001filtr.tsv, 002filtr.tsv, until 650filtr.tsv
我想使用shell脚本运行python代码,它基本上运行如下:
python my_python_prog.py 001file_read.txt 001filtr.tsv
问题是因为我有两个文件夹的大量文件。我想找到一种方法只运行一次命令,它会自动将file001从folder1运行到file001到folder2,file002从folder1运行到file002从folder2,依此类推,直到两个文件夹的file650。我怎么能用shell脚本呢?
非常感谢您的帮助,
答案 0 :(得分:2)
如果你有bash,你可以使用这样的脚本:
#!/bin/bash
for i in {001..650}; do
file_read=dir1/${i}file_read.txt
file_filtr=dir2/${i}filtr.tsv
if [[ -f $file_read ]] && [[ -f $file_filtr ]]; then
python my_python_prog.py "$file_read" "$file_filtr"
fi
done
循环遍历从000
到650
的所有数字,检查两个文件是否都存在并执行python命令。
如果你没有bash,你可以通过做一些改变来实现同样的目的:
#!/bin/sh
while (( ++i <= 650 )); do
n=$(printf '%03d' "$i")
file_read=dir1/${n}file_read.txt
file_filtr=dir2/${n}filtr.tsv
if [ -f "$file_read" ] && [ -f "$file_filtr" ]; then
python my_python_prog.py "$file_read" "$file_filtr"
fi
done
或者,您可以修改python脚本,在其中执行循环,并使用os.path.isfile()
验证两个文件是否存在。这种方法的优点是你不会调用你的脚本650次。