
다음 디렉터리 구조의 이름을 바꾸려고 합니다.
Tests Directory
├── Test1 Directory
│ ├── 2 - 1. Data
│ ├── 3 - 2. Data
│ ├── 4 - 3. Data
│ ├── 5 - 4. Data
│ ├── 6 - 5. Data
├── Test2 Directory
│ ├── 2 - 1. Data
│ ├── 3 - 2. Data
│ ├── 4 - 3. Data
│ ├── 5 - 4. Data
├── Test3 Directory
│ ├── 2 - 1. Data
│ ├── 3 - 2. Data
│ ├── 4 - 3. Data
│ ├── 5 - 4. Data
│ ├── 6 - 5. Data
그리고
Tests Directory
├── Test1 Directory
│ ├── 1. Data
│ ├── 2. Data
│ ├── 3. Data
│ ├── 4. Data
│ ├── 5. Data
├── Test2 Directory
│ ├── 1. Data
│ ├── 2. Data
│ ├── 3. Data
│ ├── 4. Data
├── Test3 Directory
│ ├── 1. Data
│ ├── 2. Data
│ ├── 3. Data
│ ├── 4. Data
│ ├── 5. Data
fd -t d -x rename 's/^(\d+ -)\s(\d+.)/$1/'
, Test1
& Test2
-를 실행하면 Test3
작동합니다.
Test
하지만 모든 디렉터리에서 실행할 필요가 없도록 명령을 사용하고 싶습니다 .
나는 열심히 노력했다
% find . -type d -exec rename 's/^(\d+ -)\s(\d+.)/$1/' {} \;
% find . -type d -exec rename 's/^(\d+ -)\s(\d+.)/$1/' {} ";"
아무것도 작동하지 않습니다. 어떡해?
자세한 내용을 추가하세요.
% find . -maxdepth 2 -type d -execdir echo {} \;
./.
./Test1 Directory
./2 - 1. Data
./3 - 2. Data
./4 - 3. Data
./5 - 4. Data
./6 - 5. Data
./Test2 Directory
./2 - 1. Data
./3 - 2. Data
./4 - 3. Data
./5 - 4. Data
./Test3 Directory
./2 - 1. Data
./3 - 2. Data
./4 - 3. Data
./5 - 4. Data
./6 - 5. Data
폴리스티렌, 디렉토리 이름에 공백이 있습니다.
답변1
귀하의 시도에 몇 가지 문제가 있지만 find
올바른 길을 가고 있습니다.
find
이름이 바뀐 디렉터리 자체가 검색되지 않도록 재귀 깊이를 제한합니다 . 이-maxdepth
옵션을 사용하고 이 옵션이 있어야 한다는 점에 유의하세요.앞으로테스트하지만뒤쪽에루트(예:.
및 사이-type d
).명령은 이름을 바꾸려는 디렉터리 바로 위에 있다고 가정하기 때문에 대신
rename
해당 작업을 사용해야 합니다 . 대부분의 다른 작업과 마찬가지로 이 작업은 최상위 디렉터리(예: 귀하의 경우) 에서 수행 되며 전체 경로를 전달합니다. 맨 위에서 "발견된" 항목까지 파일 이름만 표시되는 것이 아닙니다(즉, 귀하의 경우에는 전달된 항목입니다 ). 두 가지 문제가 모두 해결되었습니다.execdir
exec
exec
find
.
exec
./Test1/2. - 1. Data
execdir