Desactivé algo en un directorio que ya contenía muchas cosas. Quería desentrañar en un directorio separado en su lugar. Ahora hay demasiados archivos para distinguir. Sin embargo, los archivos que he anulado han sido creados en este momento (¿no?) Y los archivos originales no se han modificado por mucho tiempo (al menos un día). ¿Hay alguna forma de eliminar solo estos archivos sin marcar según su información de creación?¿Cómo eliminar todos los archivos que se crearon recientemente en un directorio en Linux?
Respuesta
Tar normalmente restaura las marcas de tiempo del archivo, por lo que no es probable que el filtrado por el tiempo funcione.
Si todavía tiene el archivo tar, que se puede utilizar para eliminar lo que se ha descomprimido con algo como:
tar tf file.tar --quoting-style=shell-always |xargs rm -i
Lo anterior funcionará en la mayoría de los casos, pero no todos (los nombres de archivo que tienen un retorno de carro en ellos se romperá), así que ten cuidado.
Puede eliminar los directorios agregando -r
a eso, pero probablemente sea más seguro simplemente eliminar los directorios de nivel superior manualmente.
encontrar. -mtime -1-tipo f | xargs rm
pero prueba primero con
hallazgo. -mtime -1-tipo f | xargs echo
Esto sería bueno, excepto por dos cosas. Primero, ** siempre ** use '-print0' y' xargs -0'. No desea que los caracteres de espacio aleatorio en los nombres de archivo le causen problemas. En segundo lugar, 'tar' restaura las marcas de tiempo, por lo que no puedes usar mtime aquí. Tal vez, a veces, tal vez, si su sistema de archivos ha sido configurado para actualizarlo. – Omnifarious
Además, tenga en cuenta, por ejemplo, encuentre -mmin -10 para archivos modificados en los últimos diez minutos – sehe
Existen varias respuestas diferentes a esta pregunta en orden creciente de complejidad.
En primer lugar, si está desactualizado, y en este caso en particular, está absolutamente seguro de que no hay caracteres extraños en sus nombres de archivo (los espacios están bien, pero no las pestañas, líneas nuevas u otros caracteres de control ni caracteres Unicode) esto funcionará:
tar -tf file.tar | egrep '^(\./)?[^/]+(/)?$' | egrep -v '^\./$' | tr '\n' '\0' | xargs -0 rm -r
todo lo que es egrepping a saltar hacia fuera en todos los subdirectorios de los subdirectorios.
Otra manera de hacer esto que funciona con nombres de archivo enrrollado es la siguiente:
mkdir foodir
cd foodir
tar -xf ../file.tar
for file in *; do rm -rf ../"$file"; done
que va a crear un directorio en el que su archivo se ha ampliado, pero suena como que quería que ya de todos modos. Tampoco maneja ningún archivo cuyos nombres comiencen con .
.
Para hacer que el método funcione con archivos que comienzan con .
, hacer esto:
mkdir foodir
cd foodir
tar -xf ../file.tar
find . -mindepth 1 -maxdepth 1 -print0 | xargs -0 sh -c 'for file in "[email protected]"; do rm -rf ../"$file"; done' junk
Por último, tomando de Mat's answer, usted puede hacer esto y funcionará para cualquier nombre de archivo y no se requieren para descomprimir el directorio nuevo:
tar -tf file.tar | egrep '^(\./)?[^/]+(/)?$' | grep -v '^\./$' | tr '\n' '\0' | xargs -0 bash -c 'for fname in "[email protected]"; do fname="$(echo -ne "$fname")"; echo -n "$fname"; echo -ne "\0"; done' junk | xargs -0 rm -r
puede manejar archivos y directorios en una sola pasada con:
tar -tf ../test/bob.tar --quoting-style=shell-always | sed -e "s/^\(.*\/\)'$/rmdir \1'/; t; s/^\(.*\)$/rm \1/;" | sort | bash
se puede ver lo que va a ocurrir dejar fuera de la tubería a la 'fiesta'
tar -tf ../test/bob.tar --quoting-style=shell-always | sed -e "s/^\(.*\/\)'$/rmdir \1'/; t; s/^\(.*\)$/rm \1/;" | sort
para manejar nombres de archivo con saltos de línea que necesita más procesamiento.
- 1. Eliminar todos los archivos en un directorio con Python
- 2. Git - Seguimiento automático de todos los archivos en un directorio
- 3. ¿Eliminar todos los archivos de git de un directorio?
- 4. LINUX: Enlace todos los archivos de uno a otro directorio
- 5. ¿Cómo puedo eliminar archivos en un directorio que se copian de otro directorio?
- 6. Comando Unix para eliminar todos los archivos en un directorio pero conservar el directorio
- 7. Copie todos los archivos en el directorio
- 8. ¿Cómo recupero todos los nombres de archivos en un directorio?
- 9. ¿Cómo obtener todos los archivos en un directorio?
- 10. ¿Cómo formatear todos los archivos bajo un directorio en emacs?
- 11. Cómo obtener archivos en un directorio, incluidos todos los subdirectorios
- 12. Objetivo c: Cómo eliminar solo todos los archivos de un directorio pero conservar el directorio
- 13. Eliminar todos los espacios en blanco de un archivo: Linux
- 14. Listar los archivos en un directorio y todos los subdirectorios
- 15. ¿Cómo puedo encontrar todos los archivos * .js en el directorio recursivamente en Linux?
- 16. Unir todos los archivos en un directorio, con un separador
- 17. gmake compila todos los archivos en un directorio
- 18. ¿Cómo eliminar todos los archivos en un repositorio de Git que no están en el directorio de trabajo?
- 19. Obtener rutas absolutas de todos los archivos en un directorio
- 20. ¿Cómo eliminar todos los archivos del directorio en el servidor remoto en python?
- 21. lista LINUX recursivamente todos los archivos en un directorio incluyendo los archivos en directorios de enlaces simbólicos
- 22. Buscar todos los archivos CSV en un directorio usando Python
- 23. Eliminar todos los permisos de directorio
- 24. PHP: Desvincular todos los archivos dentro de un directorio y luego eliminar ese directorio
- 25. Ejecutar todos los archivos SQL en un directorio
- 26. fuente de todos los archivos en un directorio de .bash_profile
- 27. Iterar todos los archivos en un directorio usando BOOST_FOREACH
- 28. ¿Cómo se requieren todos los archivos en un directorio, en una joya?
- 29. Buscar y reemplazar texto en todos los archivos de un directorio de Linux
- 30. ¿Cómo incluir todos los archivos de un directorio con cmake?
Es realmente fácil hacer que funcione con espacios en los nombres de archivo, y esa sería una respuesta mucho mejor. – Omnifarious
@omnifa ¿cómo hacer que esto funcione con espacios? para eliminar los directorios extraídos, ¿debería también incluir -R después de rm? – AnkurVj
@AnkurVj: Desafortunadamente, no hay una manera de hacer que tar le proporcione una lista de nombres de archivos separados por caracteres nulos, lo cual es bastante decepcionante. Y sí, debería haber un '-r' después de' rm'. Como Mat no está actualizando la respuesta, pondré la mía. – Omnifarious