다음과 같은 트리 구조가 있습니다.
sl_top
| |-- Pinmux_Formal_checklist
| | |-- Pinmux_Formal_checklist.config
| | |-- Pinmux_Formal_checklist.html
| | `-- rev1
| | |-- rev1.config
| | `-- rev1.html
| |-- checklist10
| | |-- checklist10.config
| | |-- checklist10.html
| | `-- rev2
| | |-- rev2.config
| | `-- rev2.html
| |-- checklist13
| | |-- checklist13.config
| | |-- checklist13.html
| | `-- rev2
| | |-- rev2.config
| | `-- rev2.html
여기서 Listing 13과 Listing 10은 동일한 파일 이름을 가지며 .html 파일은 다른 위치에 복사됩니다. Linux 명령을 사용하여 이 두 복사본을 어떻게 저장할 수 있습니까?
어떤 명령을 시도했습니까?
find . -name '*.html' -exec cp -prv '{}' 'projects/html_files' ';
결과 출력은 다음과 같습니다.
rev1.html
rev2.html
예상 출력:
rev1.html(Pinmux_Formal_checklist.html)
rev2.html(checklist10)
rev2.html(checklist13)
참고: 해당 디렉터리 이름은 괄호 안에 표시되어야 합니다.
답변1
예상한 cp 명령이 작성되면 echo
다음 줄을 제거하세요.
find . -name '*.html' -exec /bin/sh -c 'file="{}"; echo cp -prv "$file" "projects/html_files/${file##*/}(${file%/*})"' \;