2016-05-02 2 views
0

Я попыталсяBash: Как удалить все мои текстовые файлы, начиная с #?

rm -r #* 

и

rm #* 

Но это просто выводит это сообщение: использование: гт [-f | -i] [-dPRrvW] файл ... unink файл

В чем проблема?

+1

Это должно быть в Super User, но избежать его 'гт \ # *' # начинает комментарий –

+2

Try: 'гт - ./#*' – anubhava

+0

Можете ли вы уточнить, сделать файл * * names ** начинаются с '#' или содержимое файла начинается с '#'? – cdarke

ответ

3
rm \#* 

должен сделать трюк для вас. Помните, что # имеет специальное значение в оболочке, он начинает комментарий.

Цитирую

Строки, начинающиеся с символа # (за исключением #!), Являются комментариями и не будут выполнены. Комментарии также могут возникать после завершения команды.

&

побег [обратный слэш]. Механизм цитирования для одиночных символов.

\ X избегает символа X. Это имеет значение «quoting» X, , эквивалентное «X». \ Может быть использовано процитировать "и», поэтому они выражены буквально

Если бы у вас есть файлы 'file1, 'file2 & 'file3, чтобы удалить их, вы бы использовали:.

rm \'file* #Comment : This deletes all the files starting with 'file 

Ссылка:TLDP note on special characters

4

# - комментарий к оболочке. Вам нужно процитировать, например, так:

rm '#'* 

Обратите внимание, что хэш в кавычках и Глоб находится вне кавычек.

+0

Я сделал rm '#' *, и он говорит «Нет такого файла или каталога». –

+0

Затем я сделал rm '#' * (без пробела), и он сказал то же самое, но на этот раз удалил все файлы в моем каталоге, независимо от того, начинался он с # –

+4

. Это был первый, который удалил все ваши файлы , когда вы добавили пробел, он попытался удалить файл '' ', а затем' * 'был расширен до всех имен файлов в текущем каталоге. – cdarke

-2

Эта команда перечислит весь файл, начинающийся с # и отправьте их:

ls . |grep "^#.*" |xargs rm -rf