Existe uma maneira de aplicar o dos2unix
comando para que ele seja executado em todos os arquivos em uma pasta e em suas subpastas?
man dos2unix
não mostra -r
opções semelhantes ou semelhantes que tornariam isso simples?
Existe uma maneira de aplicar o dos2unix
comando para que ele seja executado em todos os arquivos em uma pasta e em suas subpastas?
man dos2unix
não mostra -r
opçõ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 globstar
opção shell bash
permite 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 zsh
e yash
(com set -o extended-glob
dentro yash
), você faria
dos2unix **/*
dos2unix
pula os binários por padrão.