!["find -exec"의 "\{\}"에서 명령 확장을 사용하는 방법은 무엇입니까? [복사]](https://linux55.com/image/142905/%22find%20-exec%22%EC%9D%98%20%22%5C%7B%5C%7D%22%EC%97%90%EC%84%9C%20%EB%AA%85%EB%A0%B9%20%ED%99%95%EC%9E%A5%EC%9D%84%20%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
나는 어떤 디렉토리를 찾고 싶다.
find /path/to/a/dir -type d -links 2
그런 다음 찾은 각 경로 이름에 대해 find
변수에 저장되어 있다고 가정 pathname
하고 싶습니다.
stow -d "$(dirname "$pathname")" -t /home/t/bin "$(basename "$pathname")"
위의 내용을 다음과 같이 결합하려면 어떻게 해야 합니까 find -exec
?
find /path/to/a/dir -type d -links 2 -exec stow -d "$(dirname \{\})" -t /home/t/bin "$(basename \{\})" \;
find
쉘이 실행되기 전에 명령 대체를 수행하는데, 대체할 경로명이 아직 명령 대체에서 발견되지 않았기 때문에 작동하지 않는 것 같습니다 .\{\}
감사해요.
답변1
sh -c
명령 으로 포장합니다.
find /path/to/dir -type d -links 2 -exec sh -c 'stow -d "$(dirname "$1")" -t /home/t/bin "$(basename "$1")"' sh {} \;