Tengo una gran cantidad de imágenes de un disco duro viejo que estoy tratando de organizar. Si ejecuto ls -l, noto que todos estos archivos tienen una fecha de creación de 2012 o anterior. Idealmente, me gustaría moverlos al segundo disco duro de mi computadora, que no está configurado para montarse automáticamente. Preferiblemente, podría hacer todo esto como un lote con algunos comandos vinculados entre sí. Hasta ahora, tengo ls -l | grep -i 2012que escupe solo los archivos con 2012 en la fecha proporcionada por ls -l. Ahora, el truco sería llevar cptodos esos archivos al nuevo directorio. No estoy seguro de dónde ir después con esto porque cada archivo tendría que copiarse. ¿Cuál sería mi próximo conjunto de comandos?
fuente

Si tiene archivos más nuevos en el disco antiguo que desea ignorar, lo haría de esta manera
Aquí hay ejemplos de comandos para esto, que suponen que desea mantener cualquier jerarquía de directorios del disco anterior en el nuevo (
cpioes un comando de copia, similar ataropax):fuente
Creo que este problema es muy similar al tuyo, también puedes consultarlo: crea subdirectorios y organiza los archivos por fecha
Escribo este nuevo script basado en la primera respuesta de ese problema:
escriba este script en un archivo nombrado
copy.shen su directorio anterior.reemplace el
/your/new/directorycon la ruta de su nuevo directoriohacer que este archivo sea ejecutable con
chmod +x copy.shluego ejecute este archivo por
./copy.shfuente
2015directorio.Probablemente debería usar una herramienta por lotes para las operaciones por lotes. Hacerlo generalmente implicará leer / escribir todos los registros en una sola secuencia en lugar de, por ejemplo, invocar un
cpproceso separado para cada archivo copiado.Ya hay una
cpiorespuesta escrita aquí, que, dada solo las opciones que ya le proporcioné, es probable que yo elija. Sin embargo, elcpioformato se ha mejorado y plegado en elpaxformato de archivo estandarizado desde su apogeo. Lo mismo es cierto detar.Un POSIX estricto
paxprobablemente no proporcionará ninguna opción para filtrar directamente a los miembros del archivo en función de los tiempos de modificación del archivo, aunque el estándar especifica el%Tmodificador de formato del modo de lista. Aún así, lapaximplementación más comúnmente disponible que conozco, que es la versión BSD mantenida por mirabilos , lo extiende a un interruptor CLI directamente accesible.Por ejemplo, para copiar todos los archivos sólo en el árbol de raíz en
./que fueron modificada por última vez antes deccyymmddHHMMque/target/dirse podía hacer:Para evitar recurrir a directorios secundarios, puede hacer lo siguiente:
Vea la
manpágina para más.fuente
pax, perotarycpiotodavía me quedo así. +1paxformato de archivo real (que es una extensión del formato ustar ) , lapaxutilidad especificada por POSIX lee / escribe cpio, pax y formatos ustar. Debido a que los tres tipos de archivo consisten principalmente en diferentes medios para codificar los metadatos de muchos archivos junto con los datos reales de dichos archivos en una sola secuencia, en realidad no es demasiado difícil. Una vez escribíshitar- que era sólo unas pocas líneas de shell-script para - en su mayoríadd-taring desarrolladores de bloques sobre la marcha basado en la especificación POSIX.cpio -H ustar...