Digamos que tengo un directorio llamado foo/
. Esta carpeta incluye subdirectorios. ¿Cómo puedo eliminar todos los directorios vacíos en un comando?
command-line
delete
directory
justingrif
fuente
fuente
rm -rf <directory-name>
. Esto eliminará el directorio, junto con todo su contenido, incluidos archivos y subdirectorios. La-r
opción significa eliminar de forma recursiva, mientras que el-f
comando significa no solicitar antes de eliminar. Sin embargo, si desea que se le solicite antes de eliminar un directorio / archivo, reemplace la-f
opción con la-i
opción.stdout
comando de un (pfind
. Ej. ) Alstdin
otro (prm
. Ej. ), Sin embargo, tenga mucho cuidado ya que puede borrar o eliminar archivos / directorios que no desea ¡Eliminar! Para obtener más información sobre cómo hacer esto, consulte lasman
páginas para cada uno de estos comandos. Para estar seguro, siempre pruebe tales cosas en un directorio temporal antes de probar la cosa real.Puede aprovechar la
rmdir
negativa del comando a eliminar directorios no vacíos y lafind -depth
opción de recorrer el árbol de directorios de abajo hacia arriba:(e ignorar los errores), o agregar
2>/dev/null
para ignorarlos realmente.La
-depth
opción parafind
comenzar a buscar en la parte inferior del árbol de directorios.rm -rf
eliminará todos los archivos en el directorio (y sus subdirectorios, y ....) Y todos los directorios y todo.fuente
Eliminará todos los directorios vacíos. Lanzará un error para cada directorio y archivo no vacío, para evitar que esos errores abarroten su terminal, use
fuente
rmdir * 2>/dev/null || true
. (La forma find (1) es mejor para los scripts pero por otra razón: porque expresa mejor lo que quieres hacer.)$HOME
. Con una sonrisa malvada.Por si solo desea eliminar los subdirectorios directos de
foo/
.fuente
Enfoque de Python
Esto funciona así:
os.walk()
función para caminar recursivamente el árbol de directorios. En cada iteraciónr
se establece en la carpeta actual a la que estamos accediendo,s
contiene una lista de directorios dentror
yf
contendrá una lista de archivos en esa carpeta. Por supuesto, sif
ys
están vacíos, sabemos quer
está vacío.empty
, la lista de todos los directorios que están vacíos, en base a la evaluación indicada anteriormente.map()
se utiliza para realizaros.rmdir()
en cada elemento de laempty
lista. La comprensión de la lista podría usarse como alternativa.Como guión, esto sería así:
fuente
/bin/sh
solo y Python es en realidad un lenguaje más elegante que esos dos