이름 바꾸기를 사용하여 시작 gl 제거

이름 바꾸기를 사용하여 시작 gl 제거

예를 들어 파일 목록이 있습니다.

./2020/47-06/gl-086115.org
./2020/47-06/gl-085792.org
./2020/47-06/gl-086941.org
./2020/47-06/gl-087140.pdf
./2020/47-06/gl-085982.pdf
./2020/47-06/gl-087032.org
./2020/47-06/gl-086115.pdf
./2020/47-06/gl-087490.pdf

gl-나는 성공하지 못한 채 시작 부분을 제거하기 위해 다음 명령을 사용했습니다 .

find . -type f -name '*gl-*' -exec rename 's/^gl-//g' {} \;

답변1

이렇게 하면 다음과 같은 작업이 수행됩니다 -d.

$ find . -type f -name '*gl-*' -exec rename -n -d 's/^gl-//' {} \;
rename(./2020/47-06/gl-087032.org, ./2020/47-06/087032.org)
rename(./2020/47-06/gl-086941.org, ./2020/47-06/086941.org)
rename(./2020/47-06/gl-087140.pdf, ./2020/47-06/087140.pdf)
rename(./2020/47-06/gl-085792.org, ./2020/47-06/085792.org)
rename(./2020/47-06/gl-085982.pdf, ./2020/47-06/085982.pdf)
rename(./2020/47-06/gl-086115.org, ./2020/47-06/086115.org)
rename(./2020/47-06/gl-086115.pdf, ./2020/47-06/086115.pdf)
rename(./2020/47-06/gl-087490.pdf, ./2020/47-06/087490.pdf)

man rename:

-d, --filename, --nopath, --nofullpath
디렉터리 이름을 바꾸지 마십시오. 경로의 파일 이름 부분만 이름이 변경됩니다.

-d스위치가 없다면

find ./2020/ -type f -name '*gl-*' -exec rename -n 's|/gl-|/|g' {} +

gl-하지만 경로에 다른 것이 없도록 주의하세요.

더 안전한 접근 방식은 다음과 같습니다.

find ./2020 -type f -name '*gl-*' -exec bash -c '
    cd $(dirname "$1")
    rename -n "s/gl-//" ./"$1"
' bash {} \;

-n출력에 만족하면 폐기합니다.

관련 정보