Como aplicar dos2unix recursivamente a todo o conteúdo de uma pasta?

11

Existe uma maneira de aplicar o dos2unixcomando para que ele seja executado em todos os arquivos em uma pasta e em suas subpastas? man dos2unixnão mostra -ropções semelhantes ou semelhantes que tornariam isso simples?

Alex Kinman
fonte

Respostas:

18

find /path -type f -print0 | xargs -0 dos2unix --

Stefan Paletta
fonte
2
Não se preocupe, dos2unixpula os binários por padrão.
Walf
3

Ignorar binários e arquivos ocultos era importante para mim:

Este funcionou bem para mim:

find . -type f -not -path '*/\.*' -exec grep -Il '.' {} \; | xargs -d '\n' -L 1 dos2unix -k

O que se traduz em: encontrar todos os arquivos não ocultos recursivamente no diretório atual e, em seguida, usar grep, listar todos os arquivos não-binários (-I) não vazios e canalizá-los para xargs (delimitado por novas linhas) um arquivo por vez para dos2unix e mantenha o timestamp original.

Veja também:

https://github.com/mdolidon/endlines

phyatt
fonte
2

Você pode usar find para encontrar todos os arquivos em uma estrutura de diretórios que deseja executar através do comando dos2unix

find /path/to/the/files -type f -exec dos2unix {} \;

Dê uma olhada nas páginas de manual para encontrar, existem muitas opções que você pode usar para especificar o que é avaliado

Jay Jay
fonte
Isso não funcionou.
Alex Kinman
2
Tenha MUITO cuidado ao executar isso se houver um diretório .git em qualquer parte da árvore de arquivos ... ele corrompeu meu repositório git local.
Aaron_H
1

Use um curinga. Assim: (Se você estiver na pasta)

dos2unix *

ou se você estiver fora da pasta, faça:

dos2unix /path/to/folder/*
Nome em Exibição
fonte
1

Usando bash:

shopt -s globstar
dos2unix **

A globstaropção shell bashpermite o uso da **glob. Isso funciona da mesma forma, *mas /corresponde aos nomes dos caminhos (portanto, também corresponde aos nomes nos subdiretórios). Isso funcionaria em um diretório contendo um número moderado de arquivos em seus subdiretórios (não muitos milhares).

Nas conchas zshe yash(com set -o extended-globdentro yash), você faria

dos2unix **/*
Kusalananda
fonte