unix2dos recursive online not found ejemplo sed awk

sed - recursive - convertir dos2unix finales de línea para todos los archivos en un directorio



install dos2unix (8)

La forma más sencilla de ejecutar dos2unix contra un directorio completo recursivamente es hacer que el comando de find ejecute para cada archivo que encuentre en función de sus criterios.

Por ejemplo, para buscar todos los archivos (excluyendo los nombres de directorio) en su directorio actual y todos sus subdirectorios y haga que dos2unix realice la conversión predeterminada en cada uno de esos archivos:

find . -type f -exec dos2unix -k -s -o {} '';''

Esto generará cada nombre de archivo único, pero no necesariamente cambiará cada uno de ellos. Esto funciona de la siguiente manera:

find . : Encuentre cualquier cosa en este directorio, incluidos sus subdirectorios, y cualquier cosa en esos subdirectorios también (recursión)
-type f : Solo devuelve los nombres de ''archivo regular''. Excluir nombres de carpetas de los resultados.
-exec : -exec el siguiente comando para cada resultado. Todo más allá de este punto debe tratarse como parte de ese comando hasta que ; Se encuentra el personaje.
dos2unix : dos2unix se ejecutará con las siguientes opciones ...
-k : Mantener la marca de fecha del archivo de salida igual que el archivo de entrada
-s : Omitir archivos binarios (imágenes, archivos, etc.). Esta opción está incluida de forma predeterminada, pero la uso de todos modos en caso de que la configuración predeterminada fuera diferente en algunos sistemas (por ejemplo, OS X v. Debian v. CentOS v. Ubuntu v. ...).
-o : escriba los cambios directamente en el archivo, en lugar de crear un nuevo archivo con los datos en el nuevo formato.
{} : Esto le indica a Find que inserte el nombre de archivo que ha encontrado como parámetro de la llamada dos2unix .
'';'' : Dígale a find que los parámetros para dos2unix han terminado. Cualquier cosa más allá de este punto será tratada nuevamente como un parámetro de find .

Curretly Estoy usando el siguiente comando para cambiar los finales de línea de dos2unix, pero esto es para file-y file ... hay una manera de ejecutar este comando para todos los archivos en un directorio

sed -i ''s//r//'' filename to convert dos2unix line endings

Gracias,


Otra opción: find your_dir type f -exec sed -i ''s//r//'' {} /;

¿Por qué no estás usando el comando dos2unix? Si está haciendo solo el sed anterior, puede haber archivos (dependiendo de su origen) que tendrán un EOF incorrecto (puede verlo si ejecuta cat y el indicador se concatena a la salida del archivo).


Sencillo:

sed -i ''s//r//'' filename1 filename2 … filenameN

O, si está hablando de contenido de un directorio

sed -i ''s//r//'' *

Funciona bien para mí.


Simplemente añadiendo otra referencia ...

En Ubuntu 14.04, la página man dos2unix proporciona este ejemplo, específicamente para la conversión recusiva:

find . -name *.txt | xargs dos2unix

Citando desde la página del manual, esta voluntad

... convertir todos los archivos .txt en el árbol de directorios bajo el directorio actual ...


utilizar

for i in `ls directory_path`; do sed -i ''s//r//'' $i ; done

para todo el directorio.


for i in `find . -type f /( -name "*.c" -o -name "*.h" /)`; do sed -i ''s//r//'' $i ; done


dos2unix *.txt

funciona bien para convertir todos los archivos * .txt en un directorio ... no es necesario el comando ''buscar''.


find $(pwd) -type f | xargs -I xxx sed -i ''s//r//g'' xxx