Команда Unix для возврата всех файлов, которые заканчиваются единственной цифрой и расширением TXT

После того как Вы сделаны, сохранив файл, Вы всегда могли split файл в части файла или несколько файлов на основе количества строк.

split -l 1000 output_file

или еще лучше просто попробуйте

command | split -l 1000 -

Это разделит поток вывода на файлы с каждым 1 000 строк (значение по умолчанию является 1 000 строк без-l опции).

Ниже команды даст Вам дополнительную гибкость, чтобы поместить или осуществить префикс к имени файла, которое будет сгенерировано, когда вывод будет сгенерирован и splitted для хранения в файл.

command | split -l 1000 - small-

3
13.11.2012, 23:29
4 ответа

Один из самых основных инструментов для определения местоположения файлов (или другие виды узлов) find утилита.

find ./ -type f -name '*[!0-9][0-9].txt'

Это будет искать:

  • ... recursivly из текущего каталога (./). Вы могли изменить это на другой путь или даже оставить его, так как это - значение по умолчанию для большинства версий find.
  • ... для объектов, которые являются файлами в противоположность каталогам, узлам устройств, символьным ссылкам, и т.д. (-type f). Вы могли оставить это, если бы Вы хотели найти другие типы также.
  • ... для объектов, которые соответствуют данному шаблону имени. Обратите внимание, что я привык одинарные кавычки для encose шаблон так, чтобы удар или Ваша оболочка не пробовали к expland, которую это к шаблону шарика прежде находит, даже получает команду. Звезда соответствует любому количеству символов, затем конец файла должен быть чем-то другим, чем цифра, затем цифра, затем Ваше расширение. (-name '*[0-9].txt')

Если существуют файлы, имя которых является только цифрой, сопровождаемой .txt, команда выше пропустит их, потому что требуется одна нецифра перед цифрой. Следующие эквивалентные команды используют булевы операторы для включения имен файлов только с цифрой также (-o “или” и ! не):

find ./ -type f \( -name '*[!0-9][0-9].txt' -o -name '[0-9].txt' \)
find ./ -type f -name '*[0-9].txt' ! -name '*[0-9][0-9].txt'

Обратите внимание, что это будет чувствительно к регистру. Если Вы хотели бы нечувствительное соответствие, можно использовать -iname вместо -name соответствовать вещам как file4.TXT также. Также знайте, что просто, потому что файл утверждает, что был текстовым файлом с тем расширением, не означает, что это. На Linux любой файл может быть любым типом, неважно, имя. Могли бы также быть текстовые файлы с другими расширениями или без расширения вообще.

8
27.01.2020, 21:08
  • 1
    Отметьте, является ли удар Вашей оболочкой затем, необходимо выйти ! также (отключающий некоторые опции истории мог бы также быть достаточным). –  dubiousjim 14.11.2012, 04:18

Используя простые шарики POSIX:

ls -d -- [0-9].txt *[!0-9][0-9].txt
6
27.01.2020, 21:08
  • 1
    Начиная с OP, который попросили единственной цифры, чего-то как *[^0-9][0-9].txt мог бы быть лучший шарик (хотя это пропустит имена файлов, состоящие только из единственной цифры плюс .txt. положительная сторона –  Ansgar Esztermann 13.11.2012, 15:11
  • 2
    @AnsgarEsztermann. –  dubiousjim 13.11.2012, 15:41
  • 3
    @StephaneChazelas: спасибо за -d --, Я думал о предложении их только после регистрации. Как альтернатива, как ChrisDown предполагает в его ответе, можно было использовать printf '%s\n' YourGlobPattern вместо ls .... –  dubiousjim 13.11.2012, 15:41

В zsh, с setopt extended_glob в ~/.zshrc:

print -lr -- *[0-9].txt~*[0-9][0-9].txt

Если Ваши имена файлов не начинаются - и не содержите \ можно сохранить немного ввода:

print -l *[0-9].txt~*[0-9][0-9].txt

Замена print -l echo показать имена с пробелами между ними вместо новых строк. Замена print -l ls -d видеть имена файлов, отформатированные ls (например, в цвете, в зависимости от Ваших псевдонимов), или просто ls если ни одно из соответствий не каталоги:

ls *[0-9].txt~*[0-9][0-9].txt

Если Вы хотите видеть файлы в подкаталогах также, добавить **/ перед шаблоном:

ls **/*[0-9].txt~*[0-9][0-9].txt
2
27.01.2020, 21:08

Команда Unix для возврата файлов, который заканчивается единственной цифрой и имеет .txt расширение

ls -l *[0-9].txt
1
27.01.2020, 21:08

Теги

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