Перемещение файлов в отдельные каталоги на основе группировки, определенной в файле CSV.

Вы можете получить такое поведение, установив стиль завершения completer для включения функции управления _expand control. Вот что я использую:

zstyle ':completion:*' completer _expand _complete _match _prefix

2
05.09.2018, 19:04
4 ответа

Попробуйте это:

    #!/bin/bash

input_file="$1"
base_dir="$2"
delim=","

while read -r line
do
    id=${line%$delim*}
    group=${line#*$delim}
    mv *"${id}"* "$base_dir//$group"
done < "$input_file"

Этот пример входного файла процесса, который не содержит определение (первой )строки, а идентификатор и группа указаны без кавычек

0
27.01.2020, 22:08

В Питоне:

import csv, os, glob
filenames = []
filedir = 'files'
with open('filelist.csv', 'rb') as f:
    reader = csv.reader(f)
    filelist = list(reader)
filelist.pop(0)

for k, filename in enumerate(glob.glob(filedir + '/*')):
    filenames.append(os.path.basename(filename))

for (id, directory) in filelist:
    matches = [e for e in filenames if id in e]
    for (filename) in matches:
        if not os.path.exists(directory):
            os.makedirs(directory)
        os.rename(filedir + '/' + filename, directory + '/' + filename)
0
27.01.2020, 22:08

Решение awkможет быть:

awk -F, 'NR>1 { group[$2]= group[$2]? group[$2] "* *" $1: $1 ;next }
    END { 
        for (x in group) printf( "echo mv *%s* -t %s\n", group[x], x )
    }' infile.csv| sh

Удалите echo, если вас устраивает результат.

.
├── infile.csv
├── new
│   ├── E51651_hf_2018-9-19.jpg
│   └── hf_oldX56369_15-10-2014.xml
└── old
    ├── 2014-12-15_T921_F1256.png
    ├── 2018-07_xx54564564T_hfdata.bmp
    └── G5481369oldbackup_2018-01-01.txt

это приведет к одновременному перемещению всех файлов, принадлежащих соответствующей группе каталогов.
о объяснении awk, пожалуйста, посмотрите мой недавний ответ .

1
27.01.2020, 22:08

Вы можете сделать это сначала sed n xargs

 sed -e '
       s/","/* /;s/^"/*/;s/"$//;1d
 '   |  xargs -l sh -c 'mv $1 "$2"'  _

Примечание. :применяются все предостережения, связанные с использованием конвейера xargs, например. грамм. кавычки, пробелы и т. д.

1
27.01.2020, 22:08

Теги

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