Если путь не содержит пробелов, этого выражения будет достаточно:
php -i | grep -Po 'extension_dir => \K/[^ ]*'
Вход
extension_dir => /some/path/php/extensions/no-debug-non-zts-20160303 => /some/path/php/extensions/no-debug-non-zts-20160303
sqlite3.extension_dir => no value => no value
Выход
/some/path/php/extensions/no-debug-non-zts-20160303
Обратите внимание, что с GNU ls
, если вы передадите -v
опцию(версию сортировку ), эти файлы будут перечислены в хронологическом порядке.
То же, если вы используете квалификатор n
glob (или опцию numericglobsort
)в zsh
, как в:
combine-nc-files./*.nc(n)
Теперь для переименования вы можете использовать zsh
и выполнить:
autoload -Uz zmv # best in ~/.zshrc
zmv -n '(*_<1979-2018>_)(<1-12>)_(<1-31>)(_UVP.nc)' \
'$1${(l[2][0])2}_${(l[2][0])3}$4'
(удалить-n
(всухую -запустить )если устраивает)
К l
левому -паду с 0
с шириной 2
тех месяцев и дней.
У вас проблема с порядком файлов. ls
сортирует их по алфавиту, но вы хотите, чтобы они сортировались по-разному.
ls *.nc |sort -t_ -k2 -k3 -k4 -n
сообщит sort
использовать _
в качестве разделителя полей, а затем выполнить численную сортировку(-n
)по второму, третьему и четвертому полю.
#!/usr/bin/python
import os
import glob
file=[]
arr=[]
for i in glob.glob('*.nc'):
file.append(i.strip())
for g in file:
arr.append(g.split('_')[3])
arr.sort()
for er in arr:
for nh in file:
p=nh.split('_')[3]
if (p == er ):
print nh
Проверено, работает нормально