2017-05-18 5 views
-1

Ich möchte nach Dateien in einem Ordner, die ein Leerzeichen in den Dateinamen haben, z.Finden Sie Dateien mit Leerzeichen in der Bash

/vol1/apache2/application/current/Test 1.pdf 
/vol1/apache2/application/current/Test 2.pdf 

Ich weiß, dass es einen Suchbefehl gibt, aber ich kann die richtigen Parameter nicht herausfinden, um all diese Dateien aufzulisten.

+4

Wie wäre es 'ls *“ „*'? 'finden. -name "* *" '? – 123

+0

'echo *" "*' funktioniert auch – user000001

+0

Sorry, ich habe vergessen zu sagen: Ich brauche die Dateiliste für einen bestimmten Ordner und alle Unterordner (rekursive Suche) ... – altralaser

Antwort

0

Use-Befehl mit einem Raum zwischen zwei Wildcards finden. Es wird Dateien mit einzelnen oder mehreren Leerzeichen übereinstimmen. "finden ." findet alle Dateien im aktuellen Ordner und in allen Unterordnern. "-type f" sucht nur nach Dateien und nicht nach Ordnern.

find . -type f -name "* *" 

EDIT

die Räume mit Unterstrichen zu ersetzen, versuchen, diese

find . -type f -name "* *" | while read file; do mv "$file" ${file// /_}; done 
+0

Und gibt es auch eine Möglichkeit, die Ergebnisse umzubenennen und die Leerzeichen automatisch zu entfernen? – altralaser

+0

Bitte überprüfen Sie meine bearbeitete Antwort. –

+0

Ich denke besser in diesem Fall 'xargs' als' while' verwenden. – beliy

2

Mit find:

find "/vol1/apache2/application/current" -type f -name "*[[:space:]]*" 
Verwandte Themen