скрипт для генерации команд для перемещения рабочей станции из одной zman-папки в другую

Conzsh:

# all *.<number>.py files in "n"umerical order
files=(*-<->.py(n))

# associative array whose key is the part before the last "-"
typeset -A latest
for f ($files) latest[${f%-*}]=$f

# plain array with the values of the associative array
keep=($latest)

# array subtraction:
echo rm -- ${files:|keep}

(quitar echosi feliz ).

Eso no hace ninguna suposición sobre qué caracteres pueden contener el resto de los nombres de archivo. Conbash(o zshoksh)y herramientas GNU:

xargs -r0a <(printf '%s\0' *-*.py |
  grep -zEe '-[[:digit:]]+\.py$' |
  sort -zrV |
  awk -vRS='\0' -vORS='\0' '
    {key = $0; sub(/-[^-]*$/, "", key)}
    seen[key]++') echo rm --
0
07.06.2019, 10:41
1 ответ

Вы можете сделать это, например, с помощью анлайнера, как этот:

while read -r WORKSTATION; do echo "$WORKSTATION" "$(grep "$(basename "$WORKSTATION" | head -c 3)" "$TO_FILE_PATH" | cut -d' ' -f2)"; done < from_file

Его вывод будет:

/Workstation/Build/red-001 /Workstation/Staff/Red
/Workstation/Build/sci-001 /Workstation/Staff/Sci
/Workstation/Build/shs-001 /Workstation/Staff/Shs

WORKSTATION— это просто имя переменной, которая будет содержать путь каждой рабочей станции для каждой итерации цикла while. TO_FILE_PATH— путь к этому файлу:

red /Workstation/Staff/Red
sci /Workstation/Staff/Sci
shs /Workstation/Staff/Shs

и from_file, это файл, который содержит этот:

/Workstation/Build/red-001
/Workstation/Build/sci-001
/Workstation/Build/shs-001

Или вы можете использовать сценарий bash, move_worksations.sh, как этот:

FROM_FILE_PATH="$1"
TO_FILE_PATH="$2"
WORKSTATION_NUMBER=0

while read -r WORKSTATION 
do
    WORKSTATIONS["$WORKSTATION_NUMBER"]=""$WORKSTATION" "$(grep "$(basename "$WORKSTATION" | head -c 3)" "$TO_FILE_PATH" | cut -d' ' -f2)""
    ((WORKSTATION_NUMBER++))
done < "$FROM_FILE_PATH"

for WS_SOURCE_TARGET in "${WORKSTATIONS[@]}"
    do zman wmv "$WS_SOURCE_TARGET"
done

Затем вы используете move_worksations.sh, таким образом:

./move_worksations.sh from_file to_file

Примечание :не забудьте дать move_worksations.shразрешение на выполнение:chmod u+x move_worksations.sh

0
28.01.2020, 03:36

Теги

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