이 형식의 디렉터리에 많은 수의 파일이 있고 */*/*/*/*.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 파일 이름에 비표준 기호가 포함된 파일 이름/디렉토리에 유의하세요. 레퍼런스 체크를 위해이 질문과 답변