Вот один лайнер для скриптов bash, чтобы получить список будних дней, это python 3. Легко модифицируется для любого, int в конце - это количество дней в прошлом, которое вы хотите.
python -c "import sys,datetime; print('\n'.join([(datetime.datetime.today() - datetime.timedelta(days=x)).strftime(\"%Y/%m/%d\") for x in range(0,int(sys.argv[1])) if (datetime.datetime.today() - datetime.timedelta(days=x)).isoweekday()<6]))" 10
Вот вариант, чтобы указать дату начала (или, вернее, конца)
python -c "import sys,datetime; print('\n'.join([(datetime.datetime.strptime(sys.argv[1],\"%Y/%m/%d\") - datetime.timedelta(days=x)).strftime(\"%Y/%m/%d \") for x in range(0,int(sys.argv[2])) if (datetime.datetime.today() - datetime.timedelta(days=x)).isoweekday()<6]))" 2015/12/30 10
. Здесь вариант для произвольной даты начала и окончания. не то, что это не очень эффективно, но полезно для ввода цикла for в сценарии bash:
python -c "import sys,datetime; print('\n'.join([(datetime.datetime.strptime(sys.argv[1],\"%Y/%m/%d\") + datetime.timedelta(days=x)).strftime(\"%Y/%m/%d\") for x in range(0,int((datetime.datetime.strptime(sys.argv[2], \"%Y/%m/%d\") - datetime.datetime.strptime(sys.argv[1], \"%Y/%m/%d\")).days)) if (datetime.datetime.strptime(sys.argv[1], \"%Y/%m/%d\") + datetime.timedelta(days=x)).isoweekday()<6]))" 2015/12/15 2015/12/30
:!cmd
для запуска grep
в качестве внешней команды: :!grep xxx *.c
:grep
; он также использует внешний grep
(или любой другой, настроенный в 'grepprg'
), но анализирует результаты и представляет их в списке quickfix
, что позволяет быстро перемещаться по результатам внутри Vim. [ 1120] grep
, есть также вариант :vimgrep
. Вы должны использовать синтаксис регулярных выражений Vim, и он будет медленнее, потому что файлы загружаются в Vim. :global
или :ilist
. С помощью :bufdo
вы можете запускать их на всех открытых буферах.