for dir in ????-??-??--??:??:??/; do
if [[ $dir > "2020-01-05--00:00:00" ]]; then
printf '%s\n' "$dir"
# process "$dir" here
break
fi
done
Приведенный выше скрипт будет перебирать каталоги в текущем каталоге, имена которых соответствуют шаблону ????-??-??--??:??:??
.
Для каждого каталога сравнивается со строкой 2020-01-05--00:00:00
. Если он сортирует после этой строки лексикографически, печатается имя каталога и цикл завершается.
Это работает, поскольку список, полученный в результате расширения имени пути, сортируется в соответствии с текущим порядком сортировки (точно так же, как ls
сортирует список по умолчанию ).
Чтобы скопировать этот каталог в другое место, замените комментарий на что-то вроде
rsync -av "$dir" /somewhere/elsewhere
Ниже приведен сценарий, который берет конкретную строку из своего первого аргумента командной строки и делает то же самое:
#!/bin/bash
for dir in ????-??-??--??:??:??/; do
if [[ $dir > "$1" ]]; then
printf '%s\n' "$dir"
# process "$dir" here
break
fi
done
Тестирование этого с каталогами, которые вы указали:
$ ls -l
total 10
drwxr-xr-x 2 myself wheel 512 Jan 24 11:14 2019-12-04--16:12:56
drwxr-xr-x 2 myself wheel 512 Jan 24 11:14 2019-12-09--13:36:53
drwxr-xr-x 2 myself wheel 512 Jan 24 11:14 2020-01-23--13:24:13
drwxr-xr-x 2 myself wheel 512 Jan 24 11:14 2020-01-23--13:47:03
-rw-r--r-- 1 myself wheel 119 Jan 24 11:23 script.sh
$./script.sh "2020-01-05--00:00:00"
2020-01-23--13:24:13/
Похоже, что вы запускаете команды с помощью интерпретатора Python. Команды, которые вы показываете, должны запускаться оболочкой, например bash
и т. д., в терминале. Это не код Python.
Ничего не могу сказать о валидности кода, кроме того, что второй cd
ничего не сделает и его можно удалить, и что имя файла, используемое с командой tar
, нужно будет изменить на сопоставьте файл, загруженный сwget
(geckodriver-v0.26.0-linux64.tar.gz
).