소스 경로를 기준으로 복사할 때 파일 이름 변경

소스 경로를 기준으로 복사할 때 파일 이름 변경

이 형식의 디렉터리에 많은 수의 파일이 있고 */*/*/*/*.txt경로의 슬래시를 밑줄로 바꾸면서 해당 파일을 다른 위치에 복사하고 싶습니다. 예를 들어 파일이 에 있는 경우 복사한 후 경로가 가 되도록 A/B/C/D/E.txt파일을 복사하고 싶습니다 . 가능합니까?dest/dest/A_B_C_D_E.txt

답변1

다음과 같은 스크립트를 사용할 수 있습니다.

for i in `find . -type f -name "*.txt"`
do
newfile=$(echo $i|sed -s 's@/@_@g'|cut -c -3)
mv "$i" "dest/$newfile"
done

파일 수가 매우 많으면 다음을 while사용해 볼 수 있습니다.for

while read i
do 
    newfile=$(echo $i|sed -s 's@/@_@g'|cut -c -3)
    mv "$i" "dest/$newfile"
done < (find . -type f -name "*.txt")

PS 파일 이름에 비표준 기호가 포함된 파일 이름/디렉토리에 유의하세요. 레퍼런스 체크를 위해이 질문과 답변

관련 정보