Tengo un gran directorio "myfiles" lleno de documentos misceláneos y no quiero modificar su estructura.
Por lo tanto, creé (varios) otros directorios para cada clase de documentos. Por ejemplo, tengo un directorio de "imágenes" que tiene enlaces simbólicos a cada uno .jpgo un .cr2archivo en el directorio "myfiles" más otros archivos descriptivos para cada enlace simbólico (con el mismo nombre de archivo) con descripción y otros metadatos. Los enlaces simbólicos en el directorio / images pueden tener un nombre diferente del archivo vinculado original.
Estoy tratando de encontrar la forma más sencilla de asegurarme de que todos y cada uno de los archivos de imagen en el directorio "myfiles" tengan un enlace simbólico en el directorio "images".
Vea un ejemplo de la estructura de carpetas
/myfiles/a.doc
/myfiles/b.jpg
/myfiles/c.cr2
/myfiles/d.mov
debería resultar
/images/b_800x600.jpg
/images/b_800x600.desc
/images/c_3820x5640.cr2
/images/c_3820x5640.cr2
fuente

find /myfiles -type fa en un archivo y luego usarlosfind /images -type l -exec readlink {} \; | egrep myfilespara obtener una lista de archivos que están enlazados y/imagesluego iterar sobre los resultados haciendo unseden cada uno para eliminar las rutas en el primer archivo que guarda ya que ya tienen el enlace simbólico y los archivos que quedan son los archivos que no tienen el enlace simbólico.ls -lpuede ver el recuento de enlaces en la segunda columna.rmesos directorios de enlaces simbólicos y úselos,pax -rwl -s "\|.*regex|modifes_filename|" /path/to/myfiles/*.jpg /path/to/jpg_dirpor ejemplo, para obtener enlaces duros con nombres de archivo alterados programáticamente solo para aquellos archivos que coinciden con sus archivos jpgs. Puede obtener mucho más que eso, como lotes basados en tiempos de cambio, etc.Respuestas:
Si entiendo la pregunta correctamente, necesita archivos en myfiles que no tengan enlaces simbólicos en las imágenes:
Hay una advertencia con este enfoque si tiene el archivo a.jpg en el directorio myfiles / 1 y tiene un enlace simbólico a ese archivo en el directorio images / 3 o simplemente en images / el archivo no se informará con el enlace simbólico faltante.
fuente
Supongo que los archivos debajo
myfilesno son enlaces simbólicos, y que ninguno de los nombres de archivo contiene nuevas líneas. (Mi enfoque aún puede funcionar si se violan estas suposiciones, pero se vuelve más complicado). También supongo que tiene lareadlinkutilidad común y que es compatible-fcon la canonización de rutas, que es el caso en Linux (tanto GNU como BusyBox), pero no en, por ejemplo, OSX.Cree una lista de archivos y ordénela por si acaso:
Cree una lista de destinos de enlaces simbólicos, con rutas absolutas.
Enumere los archivos que no están vinculados:
Si usa un shell que admite la sustitución de procesos, puede ponerlo todo en un comando:
Si los enlaces debajo
/imagesson absolutos, puede usarlosreadlinksin la-fopción, que está disponible en * BSD y OSX.fuente
commcomando, pero no lo haré ahora que veo que ya lo hizo. Sin embargo, la redirección desortno tiene sentido; entonces las sustituciones del proceso no generarán nada. Además, puede agregar muchos directorios al lado/imagessi desea buscar archivos en los/myfilesque no se vinculen los enlaces simbólicos de cualquiera de varios directorios además/images.readlink -f