2015-11-29 4 views
0

У меня есть список файлов - некоторые заканчиваются на .txt, а некоторые нет. Как запустить команду для удаления всех файлов, не заканчивающихся на txt?Удаление файлов без определенного расширения

Я пробовал:

rm *.[^txt] 

, но это не сработало?

+0

Для чего это стоит, ваша попытка спички файлы, имена которых имеет как предпоследний символ и что угодно, кроме 't' или' x' в качестве конечного символа (второй 't' является избыточным). – tripleee

ответ

3

Если вы используете Баш, вы можете включить опцию в extglob оболочки:

shopt -s extglob 

Затем вы можете использовать расширенный синтаксис шаблона !(pattern), чтобы соответствовать всем именам файлов, которые не соответствуют pattern. Во-первых, проверить его с echo:

echo !(*.txt) 

Предполагая, что выход файлы, которые вы хотите удалить, нажать на курок:

rm !(*.txt) 
2

Попробуйте это:

rm !(*.txt) 

Он должен удалить все файлы, которые не заканчиваются на .txt

сделать shopt -s extglob первый, чтобы обеспечить расширенный шаблон соответствующие функции включены.
shopt -s покажет вам все разрешенные варианты поведения оболочки.

+0

Я использую терминал на своем mac. Я получил «-bash:!: Event not found» – tester2001

+0

сначала используйте shopt -s extglob. Я обновил ответ –

+0

Это вряд ли специфично для OSX; Я не думаю, что 'extglob' включен по умолчанию куда угодно. – tripleee