
x.tar
디렉토리에 파일이 있습니다 /a
. 압축을 풀면 x.tar
다음과 같은 결과가 얻어집니다.
cust/
cust/01/
cust/01/INFENG/
cust/01/INFENG/scr/
cust/01/INFENG/scr/test.scr
cust/01/INFENG/SQL/
cust/01/INFENG/SQL/test.sql
cust/01/INFENG/MRT/
디렉토리는 주어진 디렉토리 구조를 사용하여 cust
생성 됩니다. /a
이제 내가 해야 할 일은 경로에 있는 기존 파일을 보호한 다음 이를 /a
.
cust/01/INFENG/scr/test.scr
예를 들어, .tar 파일의 압축을 풀어 얻은 파일로 교체하기 전에 (기존) 파일을 보호해야 합니다 /a
.
을 사용하고 있습니다 ksh
.
답변1
다음을 시도해 볼 수 있습니다.
#!/usr/bin/env ksh
a_files=( $(find /path/to/a/ -type f) )
for file in "${a_files[@]}"; do
mv "/path/to/app${file##*a}" "/path/to/app${file##*a}.bak"
mv "$file" "/path/to/app${file##*a}"
done
a/
및 가 app/
동일한 디렉토리에 있는 경우 (예 /home/user/{a,app}
: ):
#!/usr/bin/env ksh
a_files=( $(find /home/user/a/ -type f) )
for file in "${a_files[@]}"; do
mv "${file%%a/*}app${file##*/a}" "${file%%a/*}app${file##*/a}.bak"
mv "$file" "${file%%a/*}app${file##*/a}"
done
/home/user/app/
먼저 확장자가 as인 파일을 백업 .bak
한 다음 /home/user/a
.
답변2
이것은 당신에게 도움이 될 수 있습니다:
#!/bin/bash
#
cd /a || exit
find . -type f |
while read FILE
do
TARGET="/app/$FILE"
test -f "$TARGET" && cp -fp "$TARGET" "$TARGET.bak"
mv "$FILE" "$TARGET"
done