Создание папки на основе части имени файла

Я построил, за исключением того, что для этого (sry, что я еще не смог добавить документацию).

У меня есть папка, такая как:

$ ls
a b c d
[d3 ] Ввод except b d даст вам a и c

$ except b d
ac

Теперь вы можете передать это на rm.

except b d | xargs -0 rm

Это может быть трудно помните, так почему бы просто не построить сценарий поверх, кроме, называемый rm-except:

#!/usr/bin/env bash

except "$@" | xargs -0 rm

Аналогично легко ls-except:

#!/usr/bin/env bash

except "$@" | xargs -0 ls
1
задан 6 May 2015 в 20:34

2 ответа

В python:

#!/usr/bin/env python3
import os
import shutil

dr = sys.argv[1]; files = os.listdir(dr)
for f in [f for f in files if os.path.isfile(dr+"/"+f)]:
    folder = dr+"/"+f.split("_")[2].replace("ILN", "")
    if not os.path.exists(folder):
        os.makedirs(folder)
    shutil.move(dr+"/"+f, folder+"/"+f)

Скопируйте его в пустой файл. Запустите его:

python3 <script> <directory>

При необходимости создайте ((ые) папку (ы) переместите файлы в папку (ы)

0
ответ дан 23 May 2018 в 20:39

Использование grep:

#!/bin/bash
for file in ./KILN_SDUS51_*; do
    dir="$(grep -Po "^.*_.*_\K.*(?=ILN)" <<<"$file")"
    mkdir "$dir" && mv "$file" "$dir"
done
0
ответ дан 23 May 2018 в 20:39
  • 1
    @Downvoter: Позаботьтесь, чтобы объяснить свое действие? почему мой ответ кажется вам неправильным? Это очень плохая практика, чтобы дать downvote, а затем просто уйти .... – heemayl 6 May 2015 в 20:21

Другие вопросы по тегам:

Похожие вопросы: