Видаліть усі файли, починаючи зі знака питання


23

У мене папка, в якій я маю близько 4k файлів. Деякі з цих файлів починаються з аа ?чи !символу. Мені потрібно видалити їх, але не можу знайти вираз, який би це зробив:

rm -f ./?*

просто видаляє все. Я, можливо, можу використовувати grepна ls і передавати його через xargsта переміщувати файли в іншу папку, але я сподівався, що це буде належним чином. Потрібна допомога щодо файлів ?та !файлів.

Відповіді:


26

Не потрібно жодних фантазійних речей. Просто біжіть ?так, щоб він не вважався частиною глобуса:

rm -f ./\?*

Це !теж працює :

rm -f ./\!*

Або одним махом:

rm -f ./{\?,\!}*

Оновлення

Щойно помітив, що ви пропонуєте grepвихід ls. Я хотів би звернути вашу увагу на той факт, що ви не повинні розбирати вихід ls


4
@recluze Не дурний; далеко не очевидно, як це зробити, якщо ви не знаєте про втечу підстановки.
CVn

@recluze Все ще відчуваєте себе дурним після 5 голосів за ваше запитання? :) До речі, дивіться оновлену відповідь.
Джозеф Р.

Дякую і спасибі :) ... Була в курсі проблем з виведенням ls, але мої файли мали певний зразок, на який я міг розраховувати. Тим не менш, добре знати :)
залюбки

13

У моєму випадку символи були насправді не знаками питання, а символами unicode, які, очевидно, не могли відображатися на моїй консолі.

Використання rm -i *працювало для мене. Якщо ви цього не хочете, ви можете також видалити за допомогою inode, як описано на веб- сайті http://www.cyberciti.biz/tips/delete-remove-files-with-inode-number.html .

Щоб знайти вкладку, використовуйте:

ls -il

Потім зробіть:

find . -inum [inode-number] -exec rm -i {} \;
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.