Script para gravar todos os nomes de arquivos dentro de uma pasta e suas subpastas em um arquivo csv

6

Eu gostaria de escrever um script de shell para escrever todos os arquivos terminados em .tif em um determinado diretório e todos os seus subdiretórios em um arquivo csv.

O diretório contém vários subdiretórios e esses também podem conter pastas .zip para que o script possa extrair os nomes das pastas zip também.

Primeiro, pensei em separar essas etapas (descompactar e obter os nomes dos arquivos), mas não tenho certeza se isso é realmente necessário.

Como sou muito novo em trabalhar com a Shell, qualquer ajuda seria apreciada.

    
por Joschi 20.01.2014 / 18:39

2 respostas

6

Para procurar por arquivos .tif dentro de uma pasta e suas subpastas, então escreva a saída em um arquivo .csv , você pode usar o seguinte comando:

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

Para procurar também dentro de .zip arquivos e acrescentar a saída para o arquivo tif_filenames.csv anterior, você pode usar:

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

onde process é a seguinte função 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
}

Fonte: link

    
por Radu Rădeanu 20.01.2014 / 19:58
0

Você pode usar o código abaixo,

#!/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

Salve o arquivo como find_tif.sh no diretório em que todos os arquivos e subdiretórios tif estão localizados. dê permissão executável.

chmod +x find_tif.sh

Uso

./find_tif.sh >> tif_name_file.csv
    
por souravc 20.01.2014 / 20:31