Вообще говоря, при поиске файлов в каталоге и его подкаталогах рекурсивно использовать find
.
Самый легкий способ указать диапазон дат с find
должен создать файлы на границах диапазона и использовать -newer
предикат.
touch -t 201112220000 start
touch -t 201112240000 stop
find . -newer start \! -newer stop
Один способ сделать это использует urlencode
(установите его на Ubuntu через sudo apt-get install gridsite-clients
).
urlencode -m "$filepath"
преобразует путь к URI. Часть "file://" URI будет не учтена, но можно легко добавить что через остроту удара:
uri=$(urlencode -m "$1"); echo "file://$uri"
или непосредственно
echo "file://$(urlencode -m "$1")"
или
echo -n file://; urlencode -m "$1"
Большое спасибо Michael Kjörling для ссылок!
Можно также использовать модуль Perl URI:: зарегистрируйте непосредственно из командной строки:
$ path="/home/MHC/directory with spaces and ümläuts"
$ echo $path | perl -MURI::file -e 'print URI::file->new(<STDIN>)."\n"'
file:///home/MHC/directory%20with%20spaces%20and%20%C3%BCml%C3%A4uts
$
На CentOS, никаких дополнительных зависимостей не требуется:
$ python -c "import urllib;print urllib.quote(raw_input())" <<< "$my_url"
Rockallite дал хороший ответ, но я не хотел каждый раз его печатать.
Для этого я создал повторно используемую функцию bash под названием «file2url». Чтобы узнать, где сохранять функции bash, взгляните на этот поток на SO .
file2url () {
python -c "import sys, pathlib; print(pathlib.Path(input()).resolve().as_uri())" <<< $1
}
Предполагается, что у вас установлен python3 с именем «python».
encodeduri=$(urlencode -m "$uri")
с$uri
в двойных кавычках! – gniourf_gniourf 26.12.2012, 23:49