как составить список без изменения порядка в сценарии оболочки?

Если путь не содержит пробелов, этого выражения будет достаточно:

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
1
18.12.2020, 09:20
3 ответа

Обратите внимание, что с GNU ls, если вы передадите -vопцию(версию сортировку ), эти файлы будут перечислены в хронологическом порядке.

То же, если вы используете квалификатор nglob (или опцию numericglobsortzsh, как в:

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тех месяцев и дней.

4
18.03.2021, 22:42

У вас проблема с порядком файлов. lsсортирует их по алфавиту, но вы хотите, чтобы они сортировались по-разному.

ls *.nc |sort  -t_ -k2 -k3 -k4 -n

сообщит sortиспользовать _в качестве разделителя полей, а затем выполнить численную сортировку(-n)по второму, третьему и четвертому полю.

0
18.03.2021, 22:42
#!/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

Проверено, работает нормально

0
18.03.2021, 22:42

Теги

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