GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So finden Sie Dateien im DOS-Format in einem Linux-Dateisystem

Ich hatte viel Glück mit

find . -name "*.php" -exec grep -Pl "\r" {} \;

Wie wäre es mit:

find . -name "*.php" | xargs file | grep "CRLF"

Ich glaube nicht, dass es zuverlässig ist, ^M zu verwenden um zu versuchen, die Dateien zu finden.


Ich bin mir nicht sicher, was Sie genau mit "nicht zuverlässig" meinen, aber versuchen Sie es vielleicht:

find . -name '*.php' -print0 | xargs -0 grep -l '^M$'

Dies verwendet die grausame-Dateinamen-mit-Leerzeichen-in-ihnen-freundlicheren Optionen und findet Wagenrückläufe nur unmittelbar vor dem Zeilenende.

Denken Sie daran, dass die ^M ist ein einzelnes CTRL M Zeichen, nicht zwei Zeichen.

Und auch, dass es Dateien auflistet, wo sogar eine line befindet sich im DOS-Modus, was Sie wahrscheinlich sowieso wollen, da diese UNIX-Dateien von einem Nicht-UNIX-Editor verstümmelt worden wären.

Basierend auf Ihrem Update meldet vim Ihre Dateien im DOS-Format:

Wenn vim ist Melden Sie es als DOS-Format, dann alle Zeile endet mit CRLF . So funktioniert vim. Wenn auch nur eins Zeile hat nicht CR , dann wird es als UNIX-Format betrachtet und der ^M Zeichen sind im Puffer sichtbar. Wenn alles im DOS-Format ist, wird ^M Zeichen werden nicht angezeigt:

Vim sucht sowohl nach dos- als auch nach unix-Zeilenenden, aber Vim hat eine eingebaute Präferenz für das Unix-Format.

- Wenn alle Zeilen in der Datei mit CRLF enden, wird das dos-Dateiformat angewendet, was bedeutet, dass jedes CRLF entfernt wird, wenn die Zeilen in einen Puffer eingelesen werden, und die Puffer-'ff'-Option ist dos.
- Wenn eine oder mehrere Zeilen nur mit LF enden, wird das Unix-Dateiformat angewendet, was bedeutet, dass jedes LF entfernt wird (aber jedes CR wird im Puffer vorhanden sein und als ^M angezeigt), und der Puffer 'ff' Option wird Unix sein.

Wenn Sie wirklich wissen wollen, was in der Datei steht, verlassen Sie sich nicht auf ein zu schlaues Tool wie vim :-)

Verwendung:

od -xcb input_file_name | less

und überprüfen Sie die Zeilenenden selbst.


Linux
  1. So konvertieren Sie Dateien in UTF-8-Codierung unter Linux

  2. So finden Sie eine Datei in Linux

  3. So finden Sie eine Datei in Linux rekursiv in allen Verzeichnissen

  4. Alle Python-Dateien im Linux-Dateisystem finden?

  5. Wie liste ich Dateien mit vollständigen Pfaden in Linux auf?

So finden Sie Dateien in Debian 10

Linux-Berechtigungen – So finden Sie Berechtigungen einer Datei

So finden Sie Dateien basierend auf dem Zeitstempel in Linux

So finden Sie Dateien, die eine bestimmte Textzeichenfolge in Linux enthalten

So finden Sie Dateien, die in den letzten 24 Stunden in Linux geändert wurden

So komprimieren Sie eine Datei unter Linux