Как найти папку на основе числового порядка [в bash cli]

Я имею дело с огромными данными изображения, и это похоже на

/root/folder1
/root/folder2
/root/folder3
/root/folder4
...

Однако на самом деле имена подпапок явно не записываются с числами.

Итак, если я хочу найти папку 230-го порядка, я должен считать одну за другой. Как мне найти ее с умом?

Спасибо!

2
задан 5 April 2018 в 16:09

3 ответа

Поскольку мы не знаем, как вы их заказываете, я просто собираюсь предположить, что это в алфавитном порядке, и в этом случае запустите следующее в терминале:

cd /enter/dir/here
ls | sort | head -n 230 | tail -n 1

Это будет сортировать ls по алфавиту , получите только первые 230 результатов, а затем возьмите последний из этих 230.

1
ответ дан 2 December 2019 в 04:44

Я обычно использую bash, однако это одна из тех задач, для которой вы можете рассмотреть возможность перехода на zsh, чтобы вы могли использовать его glob определители

print dir/*(/on[230])
[ 1116] Объяснение:

  • /: каталоги совпадений
  • on: сортировка по возрастанию o rder по n ame ( в порядке убывания используйте прописные буквы O)
  • [230]: ограничьте результаты заданным диапазоном

Спецификатор диапазона в более общем виде имеет форму [m,n] - вы также можете использовать [230,230] в этом контексте.


Если вам нужно сделать это в bash, тогда требуются внешние инструменты: вот метод, который должен быть безопасным для любых имен файлов (даже с встроенными символами новой строки):

printf '%s\0' dir/*/ | sort -z | awk -vRS='\0' 'NR==230 {print; exit}'
0
ответ дан 2 December 2019 в 04:44

Предположительно Вы используете человечность, таким образом, наутилус является Вашим файловым браузером. Раз так затем CTRL+F и имя папки типа. Но поскольку Вы сказали, что папка не находится явно в числах, но можно измениться на правильном верхнем углу для показа папки деталями вместо этого значки, затем выбрал измененный по дате.

0
ответ дан 2 December 2019 в 04:44

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

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