ls для исключения определенных файлов [duplicate]

Этот вопрос уже имеет ответ здесь: Исключить из * в командной строке 3 ответа

Может кто-нибудь, пожалуйста, помогите мне написать команду ls, чтобы перечислить файлы, начинающиеся с abc (abc*.txt) и исключить те, которые содержат _DEL_ в имени (abc*_DEL*.txt)

Я пытаюсь что-то вроде этого:

ls abc*.txt --ignore "abc*_DEL_*.xt"
-1
задан 16 February 2018 в 00:13

2 ответа

Попробуйте это: ls -w 1 abc*.txt|grep --invert-match --regexp=DEL

ls выводит все согласованные файлы, по одному на строку. grep фильтрует файлы с чувствительным к регистру «DEL».

Пример:

leonid@LeonidMew:~$ ls -w 1 *.txt abc123.txt abc222.txt abc_333.txt abc_DEL.txt bbb111.txt ccc111.txt leonid@LeonidMew:~$ ls -w 1 abc*.txt|grep --invert-match --regexp=DEL abc123.txt abc222.txt abc_333.txt

Обновлено: на основе комментариев: это может помочь: Попробуйте это ls -1 abc*.txt|grep -v -e DEL Примечание glob abc * для shell командной строки, если вам это нужно в скрипте, тогда нужен другой способ использования (например, запуск оболочки для разбора команды из скрипта)

1
ответ дан 17 July 2018 в 20:48

Попробуйте это: ls -w 1 abc*.txt|grep --invert-match --regexp=DEL

ls выводит все согласованные файлы, по одному на строку. grep фильтрует файлы с чувствительным к регистру «DEL».

Пример:

leonid@LeonidMew:~$ ls -w 1 *.txt abc123.txt abc222.txt abc_333.txt abc_DEL.txt bbb111.txt ccc111.txt leonid@LeonidMew:~$ ls -w 1 abc*.txt|grep --invert-match --regexp=DEL abc123.txt abc222.txt abc_333.txt

Обновлено: на основе комментариев: это может помочь: Попробуйте это ls -1 abc*.txt|grep -v -e DEL Примечание glob abc * для shell командной строки, если вам это нужно в скрипте, тогда нужен другой способ использования (например, запуск оболочки для разбора команды из скрипта)

1
ответ дан 23 July 2018 в 21:27
  • 1
    Сообщение об ошибке: [Pre / Post Session Command] Идентификатор процесса 18350206. Стандартный вывод и ошибка: grep: Не признанный флаг: - Использование: grep [-r] [-R] [-H] [-L] [-E | -F] [-c | -l | -q] [-insvxbhwyu] [-p [parasep]] -e pattern_list ... [-f pattern_file ...] [file ...] Использование: grep [-r ] [-R] [-H] [-L] [-E | -F] [-c | -l | -q] [-insvxbhwyu] [-p [parasep]] [-e pattern_list ...] - f pattern_file ... [file ...] Использование: grep [-r] [-R] [-H] [-L] [-E | -F] [-c | -l | -q] [-insvxbhwyu ] [-p [parasep]] pattern_list [file ...] ls: Не распознанный флаг: w Использование: ls [-1ACFHLNRSabcdefgiklmnopqrstuxEUX] [fайл ...] – Rao 17 February 2018 в 01:37
  • 2
    Это для ubuntu. Возможно найти аналогичные варианты в вашем Linux. -w для ls выводится в одном столбце, потому что grep будет работать с каждой строкой отдельно после этого. О grep, если не удается найти подобное, я могу написать regexp, что будет «инвертировать совпадение». – LeonidMew 17 February 2018 в 04:28
  • 3
    Попробуйте ls -1 abc*.txt|grep -v -e DEL – LeonidMew 17 February 2018 в 04:37

Другие вопросы по тегам:

Похожие вопросы: