Script de shell para eliminar un archivo de cada directorio por encima del directorio de trabajo actual

En este artículo, discutiremos cómo eliminar un archivo de cada directorio por encima del directorio de trabajo principal usando un script de shell en Linux. Para eliminar un archivo de un directorio usamos el comando rm en Linux/UNIX

Sintaxis:

rm [OPTION]... [FILE]...

Usando el script de shell, tenemos que eliminar el archivo de entrada de cada directorio por encima del directorio de trabajo actual. El nombre del archivo se pasará como argumento. El siguiente diagrama muestra la estructura de árbol del directorio del escritorio.

En la imagen de arriba, actualmente estamos presentes en el directorio /Desktop. 

  • El directorio de trabajo actual se puede ver usando el comando pwd .
  • En la estructura de árbol del diagrama anterior, tenemos un archivo GFGfile.txt. GFGfile.txt es un archivo de texto normal.
  • Este archivo se encuentra en 4 directorios, a saber, GFG, AAAA, BBBB, CCCC.
  • Ahora iremos al directorio “CCCC” usando el cddominio. Eliminaremos el otro GFGfile.txt sobre el directorio de trabajo actual. es decir, se eliminarán todos los GFGfile.txt excepto el archivo presente en el directorio “CCCC”.

Acercarse:

  1. Inicializar bandera = 1
  2. Inicializar homeDir como directorio ‘/home’
  3. Bucle hasta que la bandera se convierta en 0; de lo contrario, vaya al paso 13.
  4. vaya al directorio Anterior usando el comando “cd ..”.
  5. establecer el comando pwd para presentar el directorio de trabajo
  6. elimine el archivo usando el comando rm
  7. si el directorio de trabajo actual es igual al directorio de inicio, establezca un indicador en 0
  8. Ir al paso 7
  9. Deténgase

A continuación se muestra la implementación.

# check whether arguments are passed or not
if [ $# -eq 0 ]
then
        # if arguments are not passed then display this
        echo "pass the file name"  
        
        # exit the program
        exit 

# end if 
fi 

# store the argument in fileName
fileName=$1 

# set flag
flag=1

# set homeDir to home directory
homeDir=/home 

# loop till flag becomes 1
while [ $flag -eq 1 ] 
do
        # go to previous directory
        cd .. 
        
        # set pwdCommand to present directory
        pwdCommand=`pwd` 
        
        # print pwd/filename
        echo "$pwdCommand/$fileName" 
        
        # remove the file from present directory
        rm "$pwdCommand/$fileName" 2> /dev/null 
        
        # set flag to 0 if we reach to /home directory
        if [ $pwdCommand = $homeDir ] 
        then 
                flag=0
        
        # end if
        fi
        
# end while
done

Producción:

Para ejecutar el script de shell, use

./delFile.sh <filename>

Otorgue permiso de ejecución al script de shell usando:

chmod +x delFile.sh

Todos los archivos GFGfile.txt se han eliminado por encima del directorio de trabajo actual 

Publicación traducida automáticamente

Artículo escrito por shantanujain18 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *