Script para criar pasta com parte do nome de arquivo. [RESOLVIDO]

1. Script para criar pasta com parte do nome de arquivo. [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 20/09/2013 - 12:14h

Olá amigos. Estou a procura de uma luz para criar um shell script que:

Leia o nome de um arquivo, que contem nesse nome a data. E pegue a data que está no nome do arquivo e crie uma pasta com a data e mova os arquivo que contenha essa parte do nome para a pasta específica. Exemplo:

Arquivo: MGNVAR008-200913,1.pdf

Eu preciso que o script armazene a parte 200913. e crie uma pasta com esse nome. São não sei como armazenar essa parte específica do nome. Criar a pasta e mover o arquivo está tranquilo.

Sou muito crú em programação. Estou na procura tanto no VOL quanto na internet. Mas se alguém puder ajudar com seu conhecimento fico grato.

Obrigado


  


2. MELHOR RESPOSTA

Fernando
phoemur

(usa Debian)

Enviado em 24/09/2013 - 10:14h

Olha amigo, eu faria assim, execute o script dentro do diretorio base que tem os arquivos ou adapte os comandos


#!/bin/bash

# 1. Compactando os pdf ao mesmo tempo em que insere a extensão no arquivo
find . -type f -iname "MGNVAR*" -print0 | xargs -0 -i gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.3 -dNOPAUSE -dBATCH -sOutputFile={}.pdf {}

# 2. Removendo os arquivos antigos não compactados e sem extensão
find . -type f -iname "MGNVAR*" \! -name "*.pdf" -exec rm {} \;

# 3. Criando os diretórios com as datas
find . -type f -iname "*.pdf" | sed 's/^.*-\([0-9]\+\),.*$/\1/' | xargs -t -L1 mkdir -p

# 4. Movendo os arquivos para dentro dos respectivos diretorios com as datas
find . -type d -name '[0-9]*' | tr -d ".\|/" | while read LINE; do eval mv "*$LINE*.pdf" "$LINE/"; done



Vê aí se deu certo, abraços...

Não gosto de usar o eval mas não consegui de outra forma... Deve ter jeito, pesquisa ae...

3. Re: Script para criar pasta com parte do nome de arquivo. [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 20/09/2013 - 15:22h

=(


4. Re: Script para criar pasta com parte do nome de arquivo. [RESOLVIDO]

Ton Melo
IZhaq_Melo

(usa FreeBSD)

Enviado em 20/09/2013 - 16:02h

m1n3ro escreveu:

=(


compreendido,

post o que voce ja fez.... ai partir dai lhe ajudamos.


5. Re: Script para criar pasta com parte do nome de arquivo. [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 23/09/2013 - 09:46h

Bom, eu preciso que meu script insira extensão .pdf nos arquivos de um determinado diretório. Resolvi com o seguinte comando:


#find /home/hdvelho/publico/NoExtensions/ -type f \! -name "*.*" -print | rename 's/(.+)/$1\.pdf/'

Em seguida ele precisa diminuir o tamanho dos pdf's. Consegui com o seguinte comando:

#gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.3 -dNOPAUSE -dBATCH -sOutputFile=DATCID001_200913,1.pdf DATCID001-200913,1.pdf

*Ainda preciso arrumar uma maneira de o comando acima ser feito para todos os arquivos em um determinado diretório, e não como está acima.

Em seguida, eu preciso arrumar uma maneira de pegar o texto que tem números no nome do arquivo. Esses números são datas. E com a sequencia de número criar um diretório com o nome referente aos números e copie os arquivos que contenham a mesma sequencia na mesma pasta com o nome que é a mesma sequência. Essa parte não tenho idéia de como fazer. Como eu disse anteriormente, são muito tosco em script ou programação. Estou tentando da seguinte forma:


#!/bin/bash

cd /home/hdvelho/publico/NoExtensions

find /home/hdvelho/publico/NoExtensions/ -type f \! -name "*.*" -print | rename 's/(.+)/$1\.pdf/'

# Até esse ponto consegui fazer, os demais to travado.








6. Re: Script para criar pasta com parte do nome de arquivo. [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 23/09/2013 - 18:00h

Os arquivo tem como nome por exemplo:

MGNVAR007-230913,1.pdf

Então eu estava tentando da seguinte forma:

#!/bin/bash


DATA=$(date +"%d%m13")

mkdir /rede/arquivo/$04/10/2005

cd /media/imp

cp -r *$04/10/2005* /rede/arquivo/$04/10/2005



Mas não rolou desse jeito.




7. Re: Script para criar pasta com parte do nome de arquivo. [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 24/09/2013 - 03:23h

Ta ficando assim, só que a parte 8, a última. Não sei como fazer a compressão de todos os arquivos .pdf.


#!/bin/bash

#1: Declarando variável DATA pela data do sistema
DATA=$(date+"%d%m13")

#2: Montando Compartilhamento Transferencia Backup
mount -t cifs //servidor/lugar/qualquer/Pdf /media/AGFA -p username=usuarioqualquer,password=senhaqualquer

#3: Criando diretório com o nome da variável DATA
mkdir /rede/arquivo/$04/10/2005

#4: Navegando ao diretório de rede montado
cd /media/Pdf

#5: Copiando os arquivos cuja o nome exista a data do dia
cp *$04/10/2005 /rede/arquivo/$04/10/2005

#6: Navegando até o diretório dos PDF's sem extensão
cd /rede/arquivo/$04/10/2005

#7: Inserindo a extensão .pdf nos arquivos
find /rede/arquivo/$04/10/2005/ -type f \! -name "*.*" -print | rename 's/(.+)/$1\.pdf/'

#8: Diminuindo o tamanho em bytes dos arquivos .pdf
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.3 -dNOPAUSE -dBATCH -sOutputFile=MGNCID016_200913,1.pdf MGNCID016-200913,1.pdf




8. Re: Script para criar pasta com parte do nome de arquivo. [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 24/09/2013 - 11:22h

Obrigado amigos.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts