使用python或bash将文件排列到文件夹中?

时间:2017-03-09 09:46:02

标签: python bash sorting

所以我有一堆文件要分类到文件夹中。名称方案如下:

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的命令,这意味着我可以在每个开头使用字符串替换,然后使用*其余的引用。

抱歉,我对编程很陌生,我的所有用例似乎都是小脚本,所以慢慢来。

2 个答案:

答案 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