디렉토리에서 다른 파일을 재귀적으로 검색하는 방법은 무엇입니까?

디렉토리에서 다른 파일을 재귀적으로 검색하는 방법은 무엇입니까?

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

관련 정보