형식의 이름을 가진 많은 하위 디렉터리가 포함된 디렉터리가 있습니다 dir.##
. 접두사는 항상 동일하며 접미사는 1~3자리의 엄격하게 증가하는 순서입니다. 그래서 다음과 같습니다.
dir.0
dir.1
dir.2
dir.3
...
dir.9
dir.10
dir.11
...
dir.298
dir.299
dir.300
먼저, 처음 몇 개의 디렉토리를 삭제하고 싶습니다. 이것은 사소한 일입니다.
dir.7
그런 다음 모든 후속 디렉터리의 이름을 바꾸어 to dir.0
, dir.8
to dir.1
, dir.10
to dir.3
등과 같은 숫자 접미사를 이동하려고 합니다. 즉, 각 접미사(숫자로 처리됨)를 주어진 상수 오프셋만큼 이동합니다.
이와 같은 이름 바꾸기 작업을 수행하는 방법각 디렉터리의 이름을 개별적으로 수동으로 바꿀 필요가 없나요?
별도의 도구를 사용하여 이를 수행할 수 있지만 "이국적인" 소프트웨어 없이도 bash에서 모든 작업을 수행할 수 있다면 좋을 것입니다.
답변1
이 감소는 상당히 간단한 방법으로 수행할 수 있습니다. 처음부터 목록을 생성합니다. 모든 경우를 처리하여 "제품화"하는 것은 쉽지 않지만 최대 비트 수와 같은 항목을 하드코딩하고 명명된 다른 항목이 없다고 가정하는 경우 dir.*
타이핑이 적은 bash 구문을 사용하십시오.
i=0
for x in dir.{?,??,???}; do
mv "$x" "${x%.*}.$i"
((++i))
done
이 정보는 dir.{?,??,???}
이전이 아니라 이전에 얻어야 합니다 dir.*
.dir.9
dir.10
<->
zsh에서는 숫자 순서로 확장하고 (n)
숫자별로 정렬( dir.9
before )을 사용하여 dir.10
무료로 더욱 강력하게 만들 수 있습니다.
i=0
for x in dir.<->(n); do
mv $x ${x%.*}.$i
((++i))
done
답변2
또 다른 방법:
n=7 # number to delete
max=$(printf "%s\n" dir.* | grep -o '[[:digit:]]*' | sort -n | tail -1)
for (( i=0; i<n; i++)); do rm -r "dir.$i"; done
for (( i=n; i<=max; i++ )); do mv "dir.$i" "dir.$((i-n))"; done
답변3
그래픽 도구 KRename을 사용할 수도 있습니다.
다음과 같이 진행하세요:
- 문서를 선택하세요
- 파일 이름을 바꾸는 옵션을 선택하십시오
- JavaScript 플러그인 열기\
- 필드 접두어를 비어 있음, 접미어: 비어 있음, 파일 이름: 원래 이름 사용, 확장자: 기타 확장자: 감소해야 하는 값은
[js;krename_extension-OFFSET]
어디에 있습니까?OFFSET