OK, dopo aver accusato nei commenti, v'è la mia soluzione migliore primo luogo, si vuole sapere, quali file sono mancanti a capo:
find -type f -exec sh -c "tail -1 {} | xxd -p | tail -1 | grep -v 0a$" ';' -print
Non super veloce (chiamare un paio di processi per ogni file), ma è OK per l'uso pratico.
Ora, quando si dispone di esso, si può anche aggiungere il ritorno a capo, con un altro -exec
:
find -type f -exec sh -c "tail -1 {} | xxd -p | tail -1 | grep -v 0a$" ';' -exec sh -c "echo >> {}" ';'
possibili grattacapi:
se i nomi dei file sono cattivi, per esempio hanno spazi, potrebbe essere necessario tail -1 \"{}\"
. Oppure trova giusto?
è possibile aggiungere ulteriori filtri per trovare, ad esempio -name \*py
o simili.
pensare a possibili problemi con le newline DOS/Unix prima dell'uso (risolvilo prima).
EDIT:
Se non vi piace l'output di questi comandi (facendo eco alcuni hex), aggiungere -q
a grep:
find -type f -exec sh -c "tail -1 {} | xxd -p | tail -1 | grep -q -v 0a$" ';' -print
find -type f -exec sh -c "tail -1 {} | xxd -p | tail -1 | grep -q -v 0a$" ';' -exec sh -c "echo >> {}" ';'
fonte
2012-12-12 13:20:39
Nessuna delle soluzioni funziona per me –
Se vuoi che vada in modo ricorsivo, puoi scambiare '*' con '$ (find. -type f)' o '$ (trova -type f -name )' –
durron597