무작위 예 :
/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
파일을 만드는 것 입니다. 내가 뭘 잘못하고 있고 어떻게 고치나요?
을 바탕으로 이 대답 질문에 "간부 찾기"에서 사용 현재 파일 이름 ( "{}") 여러 번? , 이것은 작동합니다 :
find /stack-exchange/ -type f -iname "*.log" -exec sh -c 'cp "$0" "./logs/$(basename "$(dirname "$0")").log"' {} \;
@rdupz ( 댓글 참조 )에게 올바른 방향으로 알려 주셔서 감사합니다 .
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다