Поиск файлов по номеру недели ISO

Я забыл о gnu parallel!

ls -d -- */ | parallel "cd {} && mv./__test__/index.js./data.js 2>/dev/null"
0
10.03.2020, 23:23
1 ответ

Это не так просто, но если у вас есть такой инструмент, как GNU dateдля управления арифметикой дат, это вполне возможно.

#!/bin/bash
#
# Find the date range for an ISO year and week number
#######################################################################

isoYear=$1
isoWeek=$2
shift 2
[[ $# -gt 0 ]] && fDir=$1 && shift           # Starting directory (optional)

firstJan="1 Jan $isoYear"

fjDoW=$(date --date "$firstJan" +%u)         # Day of week for 1st January

fjThu=$(date --date "$firstJan" +%F)         # Week number for Thursday that week
[[ $fjDoW -ne 4 ]] && fjThu=$(date --date "$firstJan -$fjDoW days +4 days" +%F)

fjMon=$(date --date "$fjThu -3 days" +%F)    # Start of ISO week
fjSun=$(date --date "$fjThu +3 days" +%F)    # End of ISO week

echo "Searching ${fDir-.} for files in the range $fjMon.. $fjSun inclusive" >&2
find "${fDir-.}" -newermt "$(date --date "$fjMon -1 day" +%F)" \! -newermt "$fjSun" "$@"

Типичное использование может быть таким

./iso-year-week.sh 2020 04
0
28.04.2021, 23:20

Теги

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