2012-02-22 3 views
0

Я бегу эту команду:SED - "Filename too long" - есть ли способ пропустить эту ошибку?

cd /tmp;find/-maxdepth 2 -type f | xargs -0 sed -i 's/teststring1/finally/g' 

Он обрабатывает до тех пор, пока не доходит до точки, где он сообщает об ошибке: слишком длинное имя файла. Выглядя в документы, похоже, что это когда имя файла длиннее 1024 байта. Во всяком случае, я думал, что использование печати 0 будет подавлять это, но нет. Есть ли команды пропускать ошибки, а не просто останавливаться?

+0

Вы можете трубить на 'while read line' вместо xargs? Таким образом, он пропустит неудачные строки и продолжит работу с остальными. – cmbuckley

+0

Я не мог правильно получить синтаксис, не могли бы вы показать мне команду в контексте моего помощника? – user1166981

+0

Повторно введите эту команду вручную? 'Cd/tmp; find/'немного смешно, и в команде нет' -print0', несмотря на наличие '-0' в командной строке' xargs (1) '. Пожалуйста, не перегруппируйте команды или код, это делает отладки намного сложнее без уважительной причины. Скопируйте и вставьте, пожалуйста. :) – sarnold

ответ

3
cd /tmp; 
find/-maxdepth 2 -type f -exec sed -i 's/teststring1/finally/g' {} \; 

The {} будет изменен на каждый файл, и работает даже для файлов с пробелами в именах.

+0

Еще лучше, '-exec sed ... {} +'. –

Смежные вопросы