Remover/Exibir Arquivo/Diretório de uma estrutura de diretórios
Publicado por Italo Pessoa (última atualização em 05/10/2012)
[ Hits: 5.028 ]
Homepage: http://xconhecimento.blogspot.com.br
Script simples para procurar e remover ou exibir o path de um arquivo ou diretório.
O script é simples
rmr_init [-f | -d] directory [directory | file]
rmr_init [-f | -d] [-e | -r] directory [directory | file]
-e show the path of file or directory
-r remove the file or directory
-f set the type to regular file
-d set the type to directory
Já existe o find para fazer a mesma coisa, pesquisar e remover um diretório ou arquivo, mas para efeito de aprendizagem resolvi fazê-lo
#!/bin/sh
# rm_r.sh
# Script to found and remove or display
# a regular file or directory in a directory
# and their sub-directories
# Italo Pessoa <italoneypessoa@gmail.com>
# 01/10/2012 20:15
# # # # # # # # # # # # # HOW TO # # # # # # # # # # # # # # #
# source rm_r.sh #
# rmr_init [-f | -d] directory [directory | file] #
# rmr_init [-f | -d] [-e | -r] directory [directory | file] #
# #
# -e show the path of file or directory #
# -r remove the file or directory #
# -f set the type to regular file #
# -d set the type to directory #
# # # # # # # # # # # # # HOW TO # # # # # # # # # # # # # # #
# list of files and directories of the directory informed
_lsDir(){
# verify if is a regular file or a directory
if [ "$ISFILE" ]; then
_findMatchingFile "$1" "$2" "$ACTION"
else
_findMatchingDir "$1" "$2" "$ACTION"
fi
for dir in $(ls -A "$1" | sed 's/\ /(~)/g'); do
# dirctory name
dirName=$(echo "$dir" | sed 's/(~)/\ /g')
# verify if the directory exists
if [ -d "$1/$dirName" ]; then
# list of files and directories of the directory informed
_lsDir "$1/$dirName" "$2"
fi
done
}
# scan files on the current directory
_findMatchingFile(){
# regex to remove spaces
for file in $(ls -A "$1" | sed 's/\ /(~)/g'); do
# regex to replace previous to a correspondent value of spaces
fileName=$(echo "$file" | sed 's/(~)/\ /g')
# verify if is a regular file and exists
if [ -f "$1/$fileName" ]; then
# verify if is the same name of the searched file
if [ "$fileName" = "$2" ]; then
# verify if has action
if [ "$ACTION" ]; then
# validate action
case "$ACTION" in
"-r" )
# remove file
echo "Removing file:"
echo "$1/$fileName"
rm "$1/$fileName"
echo "Removed."
;;
"-e" )
# displays the path of file, starting of the current user
# directory, the directory from which the current user is
echo "$1/$fileName"
;;
esac
else
# STANDARD
# displays the path of file, starting of the current user
# directory, the directory from which the current user is
echo "$1/$fileName"
fi
fi
fi
done
}
# scan directories on the current directory
_findMatchingDir(){
# regex to remove spaces
for dir in $(ls -A "$1" | sed 's/\ /(~)/g'); do
# regex to replace previous to a correspondent value of spaces
dirName=$(echo "$dir" | sed 's/(~)/\ /g')
# verify if is a directory and exists
if [ -d "$1/$dirName" ]; then
# verify if is the same name of the searched directory
if [ "$dirName" = "$2" ]; then
# verify if has action
if [ "$3" ]; then
case "$3" in
"-r" )
# remove directory
echo "Removing directory:"
echo "$1/$dirName"
rm -r "$1/$dirName"
echo "Removed."
;;
"-e" )
# displays the path of direcory, starting of the current user
# directory, the directory from which the current user is
echo "$1/$dirName"
;;
esac
else
# STANDARD
# displays the path of direcory, starting of the current user
# directory, the directory from which the current user is
echo "$1/$dirName"
fi
fi
fi
done
}
# verify is the directory exists
_dirExists(){
if [ ! -d "$1" ]; then
echo "ERROR: The directory \"$1\" doesn't exists."
exit 1
fi
}
# configure the action
_configAction(){
case "$1" in
"-r" )
# remove directory or file
ACTION="-r"
;;
"-e" )
# displays the path of file or directory
ACTION="-e"
;;
*)
echo "ERROR: The option \"$1\" doesn't exists."
exit 1
;;
esac
}
rmr_init(){
# key to control the type of file (regular or directory)
export ISFILE=""
# key to control the action
export ACTION="-e"
# verify how many parameters were informed
if [ "$#" -ge 3 ]; then
if [ "$#" -eq 4 ]; then
case "$1" in
"-f" )
# verify if directory exists
_dirExists "$3"
# configure the action
_configAction "$2"
# set the type of file to regular file
ISFILE=1
;;
"-d" )
# verify if directory exists
_dirExists "$3"
# configure the action
_configAction "$2"
# set the type of file to directory
ISFILE=""
;;
*)
# display error message
echo "ERROR: You must set: file(-f), directory(-d), remove(-r) or show(-e)."
exit 1
;;
esac
# list of files and directories of the directory informed
_lsDir "$3" "$4"
elif [ "$#" -gt 4 ]; then
echo "ERROR: You inserted many options"
exit 1
elif [ "$#" -eq 3 ]; then
case "$1" in
"-f" )
_dirExists "$2"
ISFILE=1
;;
"-d" )
_dirExists "$2"
ISFILE=""
;;
*)
# display error message
echo "ERROR: You must set: file(-f) or directory(-d)."
exit 1
;;
esac
# list of files and directories of the directory informed
_lsDir "$2" "$3"
fi
else
# display error message
echo "ERROR: you must insert at least three parameters."
fi
}
Fazer o download de um website completo
Backup com rsync em maquina da rede.
Script simples para ripar CDs de áudio em mp3 com uso do CDDB para nomear as faixas.
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Como realizar um ataque de força bruta para desobrir senhas?
Como usar Gpaste no ambiente Cinnamon
Atualizando o Fedora 42 para 43
ERRO: LAZARUS 4.2 64 no Linux MINT não entra mais apos ajustar desktop... (0)
Pergunta: Meu teclado não está respondendo direito como e consertar? (2)
Secure boot, artigo interessante, nada técnico. (6)
SQLITE não quer funcionar no LINUX LMDE6 64 com Lazaruz 4.2 64bit (n... (0)









