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?
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?
Respostas:
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:
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
Use um curinga. Assim: (Se você estiver na pasta)
dos2unix *
ou se você estiver fora da pasta, faça:
dos2unix /path/to/folder/*
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 **/*
dos2unixpula os binários por padrão.