所以我有一堆文件要分类到文件夹中。名称方案如下:
text_1_text_-66_text_.mrc
text_1_text_-63_text_.mrc
text_1_text_-60_text_.mrc
text_1_text_-57_text_.mrc
text_2_text_-66_text.mrc
text_2_text_-63_text.mrc
text_2_text_-60_text.mrc
等等(实际文件数加上减去66,所以text_1有更多例子)。我想按第一个数字排序(所以text_1 _...中的1)我有一个我以前用来排序文件的脚本:
import os
import shutil
n = 1
while (n < 500):
if os.path.isfile('Stack_%d.txt' % (n)):
directory = 'Stack_%d' % (n)
os.makedirs(directory)
shutil.move('Stack_%d.txt' % (n), 'stack_%d' % (n))
shutil.move('Stack_%d_shifts.txt' % (n), 'stack_%d' % (n))
shutil.move('Stack_%d.mrc' % (n), 'stack_%d' % (n))
shutil.move('Stack_%d.rawtlt' % (n), 'stack_%d' % (n))
else:
n = n+1
这有点粗糙,但可以很好地对这些文件进行排序。在一个理想的世界中,我想知道一个类似于* in bash的命令,这意味着我可以在每个开头使用字符串替换,然后使用*其余的引用。
抱歉,我对编程很陌生,我的所有用例似乎都是小脚本,所以慢慢来。
答案 0 :(得分:0)
您想要glob
模块https://docs.python.org/3/library/glob.html
import glob
glob.glob('text_1_text_*')
答案 1 :(得分:0)
因为您还要求使用bash解决方案:
#!/bin/bash
for FILE in *.mrc
do
NUM=$(echo $FILE | cut -d'_' -f 2)
mkdir -p Stack_$NUM
mv $FILE Stack_$NUM
done