Я ищу команду bash для поиска файлов с конечными пробелами в конце каждой строки. Меня не интересует удаление пробелов, а просто поиск файлов.
Bash: найти файлы с пробелами в конце строк
Ответы (8)
Найдите файлы с пробелами в конце.
find . -type f -exec egrep -l " +$" {} \;
grep
, как показали другие ответы, использование find
все же может быть хорошей идеей, если вы хотите больше контролировать, какие файлы проверять. Вы можете сделать команду find
намного более эффективной, используя +
вместо \;
, чтобы завершить первичный -exec
- это вызовет egrep
(обычно) только один раз с всеми именами файлов.
- person mklement0; 27.03.2015
Если цель состоит в том, чтобы перечислить файлы, которые имеют конечные пробелы в одной или нескольких строках:
grep -r '[[:blank:]]$' .
Чтобы не печатать строки, а печатать только имена файлов, также укажите параметр -l
. Это l
в слове list
, а не число 1
.
grep -rL '[^[:blank]]$'
... Ищет файлы, в которых есть строка, в которой символ, непосредственно предшествующий новой строке, не является пробелом, и сообщает обо всех файлах, которые не соответствуют этому шаблону. ...
- person twalberg; 27.03.2015
grep trailing whitespace
. Есть возражения против редактирования вопроса как такового?
- person Acumenus; 28.03.2015
Найдите файлы с одним или несколькими символами пробела в конце:
find . -name "*" | xargs egrep ".* +$"
egrep -m1 -v -l ".* +$"
должен найти все файлы, которые не имеют конечные пробелы в каждой строке, если я не ошибаюсь?
- person Etheryte; 26.06.2012
LIST=
find * | xargs egrep -m1 -v -l .* +$ | xargs -I {} echo {};echo -e "$LIST""\n""
find *"
должен перечислить все файлы, которые не соответствуют критериям, дважды, а файлы, которые мы хотим перечислить, только один раз. Однако, похоже, я где-то сломал трубу, поэтому я не могу использовать uniq
в результате. Любые идеи?
- person Etheryte; 26.06.2012
' $'
или включить вкладки и пробелы: '[[:blank:]]$'
- person Dennis Williamson; 26.06.2012
egrep: (path): Is a directory
. Обязательно укажите -type f
для передачи только имен файлов в grep.
- person Timo Tijhof; 18.06.2013
Существует возможность перечислить файлы, которые нигде не содержат совпадений; используйте это и регулярное выражение для символа, отличного от пробела, непосредственно перед концом строки.
grep -L '[^ ]$' *
Для рекурсии каталогов добавьте -r
. Для поиска других пробельных символов также используйте класс символов $'[^ \t]$'
или POSIX '[^[:blank:]]$'
для регулярного выражения.
*
(без -r
) приведет к появлению предупреждений для подкаталогов, если таковые имеются. -L
не совместим с POSIX, но широко поддерживается, учитывая, что GNU grep и BSD sed реализуют его.
- person mklement0; 28.03.2015
-s
, чтобы подавить предупреждения о каталогах, или использовать -r .
, если вы хотите просмотреть все дерево каталогов (OP не говорил конкретно о задаче).
- person tripleee; 28.03.2015
Если целью является список файлов с конечным пробелом в текущем пути:
grep -rli '[[:blank:]]$' .
Если вопрос буквально в том, чтобы найти файлы, в которых есть пробел в конце каждой строки, то это должно работать:
grep -rL '[^[:blank:]]$' .
-L
указывает grep
сообщать о каждом файле, который не соответствует шаблону, а шаблон ищет строки, в которых нет пробела непосредственно перед новой строкой.
Попробуй это :
find . -type f -name "* "