Я хотел бы написать сценарий оболочки, чтобы записать все файлы, заканчивающиеся на .tif в данном каталоге, и все его подкаталоги в файл csv.
Каталог содержит различные подкаталоги, и они также могут содержать папки .zip, поэтому скрипт должен иметь возможность извлекать имена из папок zip.
Сначала я подумал о разделении этих шагов (разархивирование и получение имен файлов), но я не уверен, действительно ли это необходимо.
Поскольку я действительно новичок в работе с Shell, любая помощь будет признательна.
Вы можете использовать приведенный ниже код:
#!/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
Для поиска .tif
файлов внутри папки и ее подпапок, а затем записать вывод в файл .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
- следующая функция bash:
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 sup>
.sh
файлы.
– David Cullen
06.05.2020, 12:00