Получение первого файла в каталоге в bash

Вы можете использовать инструмент командной строки taskselдля добавления и удаления различных наборов программного обеспечения и конфигураций, связанных с каждой разновидностью Ubuntu, эффективно «изменив вкус» вашей установки вместе с другими общими системными задачами. (Сервер OpenSSH., почтовый стек и т. д. ).

Установите его с помощью sudo apt install tasksel.

Обязательно прочтите man taskselи обновите свои резервные копии до начала процедуры.

3
28.04.2020, 21:14
5 ответов

Чтобы получить первый файл в текущем каталоге, вы можете поместить расширение в массив и получить первый элемент:

files=(*)
echo "${files[0]}"
# OR
echo "$files" # since we are only concerned with the first element

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

for dir in *; do
    files=($dir/*)    
    echo "${files[0]}"
done
13
19.03.2021, 02:21

Вы можете просто использоватьhead:

ls -1 | head -n1
foo.txt

Примечание :чтение Почему не разборls(и что делать вместо )?

-1
19.03.2021, 02:21

Почти это это ответь:

shopt -s nullglob
set -- *
printf "%s\n" "$1"
2
19.03.2021, 02:21

Чтобы получить имя обычного файла, который сортируется первым в каталоге, вы можете использовать

shopt -s nullglob dotglob
unset name

for name in some/path/*; do
    [[ -f $name ]] && break
    unset name
done

После этого цикла $nameбудет либо именем обычного файла, который сортируется первым, либо пустой строкой, если в каталоге нет обычных файлов some/path.

Используемые здесь параметры оболочки гарантируют, что цикл вообще не запустится, если шаблон не соответствует (nullglob), и что мы также сопоставляем скрытые имена(dotglob).

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

0
19.03.2021, 02:21

Вы можете использовать printf для вывода только первого аргумента.

Внешний printf, который распознает \c.

/bin/printf '%s\n\c' dir/*

Для отображения первого отсортированного (файла/каталога )в каталоге dir. Если требуется pwd, используйте ./*.

Может быть полезно также установить параметры bash:

shopt -s nullglob dotglob

Чтобы избежать печати глобуса, когда нет совпадения файлов, и избежать файлов с точками -.

-1
19.03.2021, 02:21

Теги

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