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-ropción significa eliminar de forma recursiva, mientras que el-fcomando significa no solicitar antes de eliminar. Sin embargo, si desea que se le solicite antes de eliminar un directorio / archivo, reemplace la-fopción con la-iopción.stdoutcomando de un (pfind. Ej. ) Alstdinotro (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 lasmanpá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
rmdirnegativa del comando a eliminar directorios no vacíos y lafind -depthopción de recorrer el árbol de directorios de abajo hacia arriba:(e ignorar los errores), o agregar
2>/dev/nullpara ignorarlos realmente.La
-depthopción parafindcomenzar a buscar en la parte inferior del árbol de directorios.rm -rfeliminará 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ónrse establece en la carpeta actual a la que estamos accediendo,scontiene una lista de directorios dentroryfcontendrá una lista de archivos en esa carpeta. Por supuesto, sifysestán vacíos, sabemos querestá 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 laemptylista. La comprensión de la lista podría usarse como alternativa.Como guión, esto sería así:
fuente
/bin/shsolo y Python es en realidad un lenguaje más elegante que esos dos