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 2012
que escupe solo los archivos con 2012 en la fecha proporcionada por ls -l
. Ahora, el truco sería llevar cp
todos 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 (
cpio
es un comando de copia, similar atar
opax
):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.sh
en su directorio anterior.reemplace el
/your/new/directory
con la ruta de su nuevo directoriohacer que este archivo sea ejecutable con
chmod +x copy.sh
luego ejecute este archivo por
./copy.sh
fuente
2015
directorio.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
cp
proceso separado para cada archivo copiado.Ya hay una
cpio
respuesta escrita aquí, que, dada solo las opciones que ya le proporcioné, es probable que yo elija. Sin embargo, elcpio
formato se ha mejorado y plegado en elpax
formato de archivo estandarizado desde su apogeo. Lo mismo es cierto detar
.Un POSIX estricto
pax
probablemente 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%T
modificador de formato del modo de lista. Aún así, lapax
implementació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 deccyymmddHHMM
que/target/dir
se podía hacer:Para evitar recurrir a directorios secundarios, puede hacer lo siguiente:
Vea la
man
página para más.fuente
pax
, perotar
ycpio
todavía me quedo así. +1pax
formato de archivo real (que es una extensión del formato ustar ) , lapax
utilidad 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
-tar
ing desarrolladores de bloques sobre la marcha basado en la especificación POSIX.cpio -H ustar
...