GNU/Linux >> Tutoriales Linux >  >> Linux

Eliminar solo archivos en el directorio en linux NO directorios

Dado que esto es alto en la búsqueda de Google, la respuesta más simple es:

rm $directoryPath/*

donde $directoryPath es el directorio que desea vaciar. Los créditos deben ir a cbm3384 (que por alguna razón obtuvo votos negativos para esta respuesta, ¿por qué?)

Si no desea confirmar:

rm -f $directoryPath/*

Si no crees, prueba man rm o

mkdir -p 1/2/3; echo 'hello1' > 1/hello1.txt; echo 'hello2' > 1/2/hello2.txt;echo 'hello3' > 1/2/3/hello3.txt
rm 1/2/*

Lo anterior crea una estructura de directorios, que tiene 'helloX.txt' en cada carpeta (X es el nivel de directorio). rm 1/2/* elimina hello2.txt y deja la otra estructura intacta.

También rm */*/* elimina solo hello2.txt . Es el único que coincide con el patrón.

Solo un ejemplo de un Makefile que limpia el directorio tmp de cakephp y deja intacta la estructura del directorio:

clean:
    -rm -f tmp/*
    -rm -f tmp/*/*
    -rm -f tmp/*/*/*
    -rm -f tmp/*/*/*/*

Menos delante del rm significa "no detenerse ante errores" (el directorio no eliminado devuelve un error). Si desea guardar algún nivel, simplemente elimine esa línea, p. la segunda línea rm elimina los registros.

Avíseme si tiene un sistema que hace algo más (¿BSD?).

EDITAR: Probé esto en ubuntu 12.04, osx lion y sourceforge.net shell. Todos se comportan como la explicación anterior.


find PATH -maxdepth 1 -type f -delete

PERO esto no le pedirá confirmación ni generará lo que acaba de eliminar. Por lo tanto, es mejor ejecutarlo sin la acción de eliminar primero y verificar que sean los archivos correctos.


Puedes usar find con -type f solo para archivos y -maxdepth 1 entonces find no buscará archivos en subdirectorios de /path/to/directory . rm -i le preguntará en cada eliminación para que pueda confirmar o rechazar la eliminación. Si no le importa que le pidan confirmación de cada eliminación, cámbielo a rm -fv (-f para fuerza la eliminación). El -v flag hace que con cada eliminación, se imprima un mensaje diciendo qué archivo se acaba de eliminar.

find /path/to/directory -maxdepth 1 -type f -exec rm -iv {} \;

Esto debe cumplir con los criterios:

NO directorios
NO subdirectorios
NOT archivos en estos subdirectorios.


Linux
  1. Cómo cargar o descargar archivos/directorios usando sFTP en Linux

  2. Cómo encontrar un archivo en Linux en todos los directorios recursivamente

  3. Copiar archivos y directorios en Linux

  4. 9 directorios de Linux que debes respaldar y uno que no debes

  5. ¿Número máximo de archivos/directorios en Linux?

Cómo eliminar archivos y directorios usando la línea de comandos de Linux

Cómo copiar archivos y directorios en Linux

Cómo quitar (eliminar) directorio en Linux

Cómo eliminar archivos y directorios en Linux

Cómo eliminar archivos y directorios en la terminal de Linux

Conceptos básicos de la línea de comandos de Linux:trabajar con archivos y directorios