Bash скрипт для архивирования файлов и папок с соответствующими именами в другой каталог - PullRequest
0 голосов
/ 28 января 2020

У меня есть много папок и файлов следующего типа:

├── name 1.htm
├── name 2.html
├── name 1_files 
│   ├── some files
├── name 2_files 
│   ├── some files

Мне нужно для каждого файла .htm или. html найти соответствующую папку с тем же именем, но с "_files" "в конце.

Затем мне нужно поместить найденный файл и папку в другую папку, например, '000', и сжать ее.

Затем мне нужно переместить полученный ZIP-файл. файл в другую папку, например, «Найдено».

Я новичок ie в bash и в целом пишу сценарии, поэтому любая помощь будет оценена.

1 Ответ

0 голосов
/ 29 января 2020

Ниже приведен префикс zip. sh, который можно запустить из каталога, в котором находятся файлы htm *:

mkdir -p found
ls *.htm* > htmlfiles.txt
cat htmlfiles.txt | cut -d"." -f1 | uniq > htmlprefixes.txt
PREFIXES=$(echo `cat htmlprefixes.txt`)
for prefix in $PREFIXES
do 
mkdir -p 000$prefix
cp $prefix* 000$prefix
zip -r 000$prefix.zip 000$prefix
mv 000$prefix.zip found
done
rm *.txt

Объяснение

  • Строка 1: Создать каталог found , если он не существует
  • Строка 2-4: Извлечь уникальные префиксы htm или html в переменную PREFIXES
  • Строка 5-11: массив переменных L oop через PREFIXES для:
    • создания каталога с префиксом 000, например 0001,
    • , копирования файлов префикса htm или html и префикс dir к каталогу 0001,
    • , заархивируйте каталог 0001 в файл 0001.zip,
    • теперь переместите файл 0001.zip в найденный каталог.
    • Повторите шаги для каждого префикса, такого как 2,3,4 и т. Д. c.

Наконец, проверьте, содержит ли каталог "found" все почтовые файлы

...