2017-10-02 4 views
0

비슷한 파일 이름을 여러 디렉터리에 포함하고 있습니다. 파일의 이름을 바꾸고 파일 이름의 확장자로 디렉토리의 이름을 추가하고 싶습니다. 다음은 예입니다.파일 이름 확장명으로 디렉터리 이름 추가

dir1 
    file1 
    file2 
    file3 

dir2 
    file1 
    file2 
    file3 

현재 내가 수행하고있는 작업은 각 디렉토리에서 다음을 실행하여 대량 이름을 바꾸는 것입니다.

$> cd dir1 
$> for f in *; do mv "$f" "$f.dir1"; done 
$> ls 
$> file1.dir1 file2.dir1 file3.dir1 
$> cd ../dir2 
$> for f in *; do mv "$f" "$f.dir2"; done 
$> ls 
$> file1.dir2 file2.dir2 file3.dir2 

하지만이 중복되고있는 방법이 자동화하고 한 번에 모두 부모 디렉토리에서 인에 모두 DIR1 및 DIR2이 작업을 수행하는 경우 궁금하고있다. 다소 관련있는 질문은 here; 그러나 ms 창 스크립트를 거의 쓰지 않아서 언젠가는 이해하고 플랫폼으로 포팅 할 때가 있습니다.

도움 주셔서 감사합니다.

답변

1

당신은 그런 식으로 스크립트를 수정할 수 있습니다

부모 디렉토리에서
for d in *; do 
if [ -d $d ] ; then 
    cd $d; 
    for f in *; do 
     mv "$f" "$f.$d"; 
    done 
    cd ..; 
fi 
done 

, 당신은 그것을 실행할 수 있습니다.

1

당신은 부모 디렉토리에서 이것을 사용할 수 있습니다 : 그것은 당신을 위해 작동하는 경우

find -maxdepth 1 -type d -name 'dir*' -exec bash -c \ 
'for file in "${1}"/* ; do 
    echo -v "${file}" "${file}"."$(basename "${1}")" 
done' -- {} \; 

mv에 의해 echo를 교체합니다.