linux - ejemplo - ¿Cómo puedo ejecutar dos2unix en un directorio completo?
dos2unix ubuntu (7)
Como me resultó poco satisfecho con dos2unix, desarrollé mi propia utilidad simple. Aparte de algunas ventajas en velocidad y previsibilidad, la sintaxis también es un poco más simple:
endlines unix *
Y si desea que se ubique en subdirectorios (omitiendo direcciones ocultas y archivos que no sean de texto):
endlines unix -r .
endlines
está disponible aquí https://github.com/mdolidon/endlines
Tengo que convertir un directorio completo usando dos2unix
. No soy capaz de averiguar cómo hacer esto.
Para cualquier usuario de Solaris (estoy usando 5.10, también se puede aplicar a versiones más recientes, así como a otros sistemas Unix):
dos2unix no omite sobrescribir el archivo, solo imprimirá la versión actualizada a la salida estándar, por lo que tendrá que especificar el origen y el destino, es decir, el mismo nombre dos veces:
find . -type f -exec dos2unix {} {} /;
Probablemente sea mejor omitir los archivos y carpetas ocultos, como .git.
Entonces, en lugar de usar find
, si su versión de bash
es lo suficientemente reciente o si está usando zsh
, simplemente haga lo siguiente:
dos2unix **
Tenga en cuenta que para Bash, esto requerirá:
shopt -s globstar
.... pero esta es una característica lo suficientemente útil como para que, honestamente, simplemente la ponga en su .bashrc
todos modos.
Si no desea omitir los archivos y carpetas ocultos, pero aún así no quiere meterse con find
(y no le culparía), puede proporcionar un segundo argumento recursivo para que coincida solo con las entradas ocultas:
dos2unix ** **/.*
Tenga en cuenta que en ambos casos, el globo se expandirá para incluir directorios, por lo que verá la siguiente advertencia (potencialmente muchas veces): Skipping <dir>, not a regular file.
Si no hay un subdirectorio, también puede tomar
ls | xargs -I {} dos2unix "{}"
Si se trata de un directorio grande, es posible que desee considerar la ejecución con varios procesadores:
find . -type f -print0 | xargs -0 -n 1 -P 4 dos2unix
Esto pasará 1 archivo a la vez, y usará 4 procesadores.
find . -type f -print0 | xargs -0 dos2unix
Buscará recursivamente todos los archivos dentro del directorio actual y llamará a estos archivos comando dos2unix
for FILE in /var/www/html/files/*
do
/usr/bin/dos2unix FILE
done