2016-05-04 2 views
0

Может ли кто-нибудь сказать мне, что не так, в следующем порядке удаления файлов, которое начинается с «#».Что не так в следующем подходе (rm + xargs)

Файлы в каталоге:

[email protected]:~/.scratch/hmm$ ls 
five #four #one six #three #two 
[email protected]:~/.scratch/hmm$ 

[email protected]:~/.scratch/hmm$ ls . |grep "#.*" |xargs rm -rf 
[email protected]:~/.scratch/hmm$ ls 
five six 
[email protected]:~/.scratch/hmm$ 

Ps: Просить ссылкой на следующий вопрос

Bash: How do I delete all my textfiles starting with #?

+1

Зачем вам нужны 'ls' и' grep'. Это может быть просто 'rm - ./#*' – anubhava

+1

. Вы можете увидеть мой похожий комментарий на свой предыдущий вопрос также – anubhava

+0

Я сделал, и мне понравилось ваше больше, поскольку это просто, я хотел знать, если что-то не так в этом ... Поскольку я не очень хорошо знаком с xargs, поэтому я хочу знать, правильно ли используется xargs или просто по совпадению, я получаю желаемые результаты. – monk

ответ

0

ls может перечислить файлы в несколько колонок, и ваше регулярное выражение не привязан к началу от имени файла. Имена файлов, содержащие пробелы, также будут проблематичными.

+0

ahh, теперь я получил его. Он может удалить любой файл, который имеет # между ними. Должно быть лучше ls. | grep "^ #. *" | xargs rm -rf – monk

+0

Лучше, но все еще недостаточно. По крайней мере, вам также нужно сказать 'ls -1'. –

+0

@MichaelVehrs 'ls' по умолчанию используется для одного столбца, если его стандартный вывод не является терминалом. – chepner

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