디렉토리에서 모든 .log 파일을 '찾아서'상위 디렉토리 이름을 딴 다른 디렉토리로 복사 하시겠습니까?

its_me

무작위 예 :

/stack-exchange/
|
|-- stack-overflow/
|   |-- questions/
|   |-- people/
|   |-- site.log
|-- super-user/
|   |-- questions/
|   |-- people/
|   |-- answers.log
|-- ask-ubuntu/
|   |-- questions/
|   |-- people/
|   |-- linux.log
|-- logs/

이것은 find주어진 디렉토리의 모든 로그 파일에 사용할 명령입니다 .

find /stack-exchange/ -type f -name "*.log"

이제 예제로 이동하여 3 개의 로그 파일 (site.log, answers.log 및 linux.log)을 모두 /stack-exchange/logs디렉토리 에 복사하고 다음과 같이 상위 디렉토리의 이름을 따서 이름을 지정하고 싶습니다.

/stack-exchange/
|
|-- [...]
|
|-- logs/
|   |-- stack-overflow.log
|   |-- super-user.log
|   |-- ask-ubuntu.log

어떻게하나요? 나는 이것을 시도했다 :

find /stack-exchange/ -type f -iname "*.log" -exec cp "{}" "../logs/$(basename "$(dirname "{}")").log" \;

친한 것 같지만 작동하지 않습니다. 그것이하는 일은 ..log파일을 만드는 것 입니다. 내가 뭘 잘못하고 있고 어떻게 고치나요?

its_me

을 바탕으로 이 대답 질문에 "간부 찾기"에서 사용 현재 파일 이름 ( "{}") 여러 번? , 이것은 작동합니다 :

find /stack-exchange/ -type f -iname "*.log" -exec sh -c 'cp "$0" "./logs/$(basename "$(dirname "$0")").log"' {} \;

@rdupz ( 댓글 참조 )에게 올바른 방향으로 알려 주셔서 감사합니다 .

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관