Как отсортировать файлы в каталоге по порядковому номеру файла?

Для сортировки записей по правильному порядку номеров (например, 1, 2, 3, [...], 9, 10, 11, 12) вместо символа сортировки (например, 1, 10, 11, 12, 2, 3, [...], 9) вы можете использовать команду ls с опцией -v и печатать по одной строка с опцией -1 .

Измените вашу команду на TMPLIST = "$ (ls -v1 $ MYWEBAPPSRV_DIR)" , чтобы создать список со всеми файлами в правильном порядке.

Я не совсем понимаю, что вы имеете в виду, когда говорите, что вам нужен только каталог, а не файл. Если я неправильно понял, поясните, пожалуйста. Вот сценарий, который, учитывая путь, выполнит некоторый код, если это файл, или другой код, если это каталог. Сохраните проверяемый путь в переменной с именем $ test, чтобы это работало.

if [ "$(ls -ld $test | grep '^d')" != "" ]
then echo "Directory code here"
else echo "File code here"
fi
1
04.07.2016, 11:57
2 ответа

GNU ls также имеет -v естественный вид номеров (версий) в тексте , например sort -V .

Пробелы в имени файла можно устранить, удалив пробел из $ IFS (при условии, что у вас нет новых строк в именах файлов):

$ IFS=$'\n' 
$ for x in $(ls -v) ; do echo "> $x" ; done
> 1-aa aa
> 2-cc cc
> 10-bb bb
> 21-dd dd
$ vlc $(ls -v)

(Если вы делаете это в интерактивном режиме, IFS останется измененным впоследствии.)

Для получения дополнительной информации о IFS см. записи Дэвида Уиллера о специальных символах в именах файлов

1
27.01.2020, 23:13

Это должно работать

find . -name "*mp4" -print0 | sort -Vz | xargs -0 vlc
6
27.01.2020, 23:13

Теги

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