Como criar um script para criar uma estrutura e classificar arquivos movendo-os para diretórios?

1

Eu tenho um monte de arquivos que todos têm uma primeira linha sendo uma data. Todos eles começam com as mesmas 2 primeiras letras sendo "ff". Eu preciso criar um script que usaria essa primeira linha em todos os arquivos e classificá-los em diretórios criando esses diretórios também.

Por exemplo, 1 arquivo contém isso:

Euprecisoextrairadatacompletamovendotodososarquivosparadiretóriosporano,sub-diretóriosparaomêseoutrosubparaodia.Atéagoraeutenhoessescriptquesómovearquivosporano.Foi-meditoqueeupoderiausarafunção-p,masrealmentetenhousadooUNIXpor3dias,entãofiqueiconfusoagora.

    
por Mantas 24.05.2018 / 15:58

2 respostas

0

você deve ler as páginas do manual:

  • homem 1 corte
  • homem 1 mkdir

Dicas:

  • cut -f1,2,3 oferece a capacidade de gerar vários campos
  • cut --output-delimiter=CHAR permite substituir o delimitador de saída, cujo padrão é o delimitador de entrada
  • mkdir -p a/b/c cria a hierarquia de diretórios a / b / c , ou seja, b é subdir de a e c é subdirecionado de b .
por 24.05.2018 / 16:50
0

Aqui está uma solução:

outputPath='/path/to/output/'
for file in $(find ~/filesToSort/ -type f -name "ff*")
do
    firstLine=$(head -n 1 $file)
    datePath="${firstLine//-//}"
    mkdir -p $outputPath$datePath
    mv $file $outputPath$datePath
done

Basicamente, este script faz:

  1. Listar todos os arquivos
  2. Pegue a primeira linha do arquivo em uma string
  3. Substitua "-" por "/" na string para criar um caminho
  4. Crie o caminho
  5. Mova o arquivo para o caminho recém-criado

Você pode adicionar teste para garantir que a primeira linha corresponda ao modelo necessário.

    
por 24.05.2018 / 17:29