Você pode ser um usuário veterano de Linux / Unix. Mas eu escreverei as instruções considerando que você é um novo usuário Linux como eu, para que eu não perca nada da minha parte ...
Aviso !!!
Antes de executar este script, certifique-se de ter feito backup de todas as imagens nas quais deseja executar este script para fazer a operação.
Existem muitas variáveis, como a contagem de palavras da convenção de nomes, etc., que podem afetar o resultado da execução. Por favor, certifique-se de fazer backup de seus dados ... Nada será excluído, mas o script pode alterar seus nomes de arquivo irregularmente se houver algum problema.
Não execute este script se alguma imagem contiver um ID com mais de 2 caracteres.
Como você mencionou antes
"XXX: significa um ID da foto, varia de 1 a n caracteres"
"e deu um exemplo de" suponha que seu nome é 201504121A, então essa imagem será movida para o diretório 12-04-2015 e renomeá-la de 201504121A para apenas ID, o que significa 1A "
O ID das imagens deve ser algo como 1A 1B 1C 12 C 22 etc .... Você entendeu ... Deve ter 2 caracteres e não um caractere como 1 2 3 ... ou 3 caracteres como 222 666 777 etc ... deve ser exatamente 2.Se houver algumas imagens assim ... eu recomendo que você modifique o meu código para se adequar ao seu propósito e lembre-se sempre de fazer backup dos seus dados antes da execução do script.
Escrito em Bash
#!/bin/bash
#Developed by Sayan Bhattacharjee Date:26th may 2015 Tuesday Time 4:46PM IST
# conatact :[email protected] or askubuntu.com Username:Sayan Bhatttacharjee
#More updates may come if required....
#Feel free to modify and redistribute this script
echo "Enter the extension of the files"
echo "like .jpg .png .bmp etc"
echo "make sure to enter . before the extension"
read extension
ls *$extension > filenames
echo "Showing all the files of the extension present in the following directory"
cat filenames
echo "Checking line read option"
## while it reads line by line it will perform the required actions
while read line
do
echo "==============================================================="
imageName=$line # updates the name of the image one by one in each loop according to how they are saved in the file
echo "Imagefile is - $name"
echo "Running file name resolver"
echo "Running year resolver"
year=${imageName:0:4 } #takes 4 lettters from the front
echo "Year is $year"
echo "Running month resolver"
abc=${imageName: (-10) } # it will extract 10 characters from the end of 201504121A.jpg to produce 04121A.jpg
month=${abc:0:2 } #It takes two characters from front of 04121A.jpg to produce 04
echo "month is $month"
echo "Running day resolver"
abc1=${imageName: (-8) } # it will extract 8 characters from the end of 201504121A.jpg to produce 121A.jpg
day=${abc1:0:2 } #It takes two characters from front of 121A.jpg to produce 12
echo "day is $day"
echo "Running ID resolver"
abc2=${imageName: (-6) } # it will extract 6 characters from the end of 201504121A.jpg to produce 1A.jpg
ID=${abc2:0:2 } #It takes two characters from front of 1A.jpg to produce 1A
echo "$ID"
echo "Present Working Directory is"
pwd > base.txt #saving present working directory
baseDirectory='cat base.txt'
echo "$baseDirectory"
echo ".............................................................."
echo "Running Directory creation and Image Insertion"
echo "Directory will not be created if it exists"
mkdir $day-$month-$year
echo "moving image and renaming it........"
mv $baseDirectory/$year$month$day$ID$extension $baseDirectory/$day-$month-$year/$ID$extension
cd $day-$month-$year
#echo "Present Working Sub Directory is"
#pwd > subpwd.txt #saving present working directory
#presentWorkingSubDirectory='cat subpwd.txt'
#echo "$presentWorkingSubDirectory"
echo "Returning to Base Directory"
cd $baseDirectory
echo "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
done < filenames
echo "execution finished"
Salve o bloco de código no arquivo de texto como dataOrganiser.sh
(ou qualquer outro nome que você preferir; mas a extensão deve ser .sh
).
Certifique-se de que o dataOrganiser.sh esteja no diretório onde estão todas as suas imagens. Caso contrário, ele não funcionará e você terá que configurá-lo manualmente ...
Também esteja ciente de que ele será capaz de trabalhar em arquivos de imagem de apenas uma extensão de cada vez .... por exemplo, ele funcionará em .jpg primeiro, depois em .png e outros ... a escolha da extensão será ser dado a você em runtime .. Também é possível usá-lo em outros formatos de arquivo como .txt .doc .pdf etc
Em seguida, dê autoridade executável ao arquivo dataOrganiser.sh digitando
sudo chmod 755 /path/to/dataOrganiser.sh
755 lhe dará leitura, escreva e execute autoridade e leia e escreva autoridade aos outros. ser-lhe-á pedida a sua senha ..enter-la para executar como sudo.
Agora execute o script digitando
/path/to/file/dataOrganiser.sh
Depois que o script for iniciado, você será solicitado a fornecer a extensão das imagens ... você pode fornecer apenas um tipo de extensão de cada vez. E as extensões que podem ser dadas devem ser feitas de três alfabetos como jpg bmp png gif, etc. Qualquer coisa como tiff não funcionará..você tem que modificar o script ..... novamente, certifique-se de fazer backup das imagens
Quando solicitado a digitar o nome da extensão, insira-o como .jpg ou .bmp ou .png ou .gif, pois será necessário fornecer o. (ponto antes da extensão funcionar).
Você se lembrou de backup mais cedo ?? .. se você não fechar o backup do programa e voltar a executar o programa novamente ..... Eu não quero causar nenhum dano a alguém dados
Eu tenho dado todas as informações que vêm à minha cabeça agora ... por favor, certifique-se de seguir todas as instruções dadas acima e novamente Você se lembrou de fazer backup de suas fotos