Скрипт для записи всех имен файлов внутри папки и ее подпапок в CSV-файл

Я хотел бы написать сценарий оболочки, чтобы записать все файлы, заканчивающиеся на .tif в данном каталоге, и все его подкаталоги в файл csv.

Каталог содержит различные подкаталоги, и они также могут содержать папки .zip, поэтому скрипт должен иметь возможность извлекать имена из папок zip.

Сначала я подумал о разделении этих шагов (разархивирование и получение имен файлов), но я не уверен, действительно ли это необходимо.

Поскольку я действительно новичок в работе с Shell, любая помощь будет признательна.

7
задан 22 January 2014 в 16:22

2 ответа

Искать .tif файлы в папке и ее подпапках, затем запишите вывод в a .csv файл можно использовать следующую команду:

find /path/to/folder -iname '*.tif' -type f >tif_filenames.csv

Искать также внутри .zip файлы и добавляют вывод к предыдущему tif_filenames.csv файл можно использовать:

find /path/to/folder -iname '*.zip' -type f -exec unzip -l '{}' \; | process

где process следующая функция удара:

function process() {
  while read line; do
    if [[ "$line" =~ ^Archive:\s*(.*) ]] ; then
      ar="${BASH_REMATCH[1]}"
    elif [[ "$line" =~ \s*([^ ]*\.tif)$ ]] ; then
      echo "${ar}: ${BASH_REMATCH[1]}"
    fi
  done
}

Источник: https://unix.stackexchange.com/a/12048/37944

6
ответ дан 22 January 2014 в 16:22

Вы можете использовать приведенный ниже код:

#!/bin/bash

for f in $(find . -iname "*.tif" -type f)
do
    echo "$(basename $f)"
done

for f in $(find . -iname "*.zip" -type f)
do
    less $f | grep "tif" | awk '{print $NF}'
done

Сохраните файл, скажем, как find_tif.sh в каталоге, где расположены все файлы tif и подкаталоги. дать ему исполняемое разрешение.

chmod +x find_tif.sh

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

./find_tif.sh >> tif_name_file.csv
0
ответ дан 22 January 2014 в 16:22

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

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