
누구든지 아래와 같은 Solaris 명령을 제공할 수 있습니까?
$ find . -type f -printf '%f,%h\n'
코드를 실행한 후 "printf find 옵션 오류: [-H|-L] 경로 목록 조건자 목록 오류"가 발생합니다.
Solaris UNIX 환경은 Printf를 지원하지 않습니다.
자세한 내용은 다음 링크를 참조하세요.
http://explainshell.com/explain?cmd=find+sample+-type+f+-printf+%27%25f%2C%25h%5Cn%27
미리 감사드립니다
답변1
이 -printf
작업은 GNU find에만 해당되므로 GNU find를 실행하지 않는 플랫폼에서는 사용할 수 없습니다. 별도로 설치하지 않는 한, 비임베디드 Linux 및 Cygwin에서만 GNU find를 실행합니다.
당신은 할 수Solaris에 GNU 찾기 설치.
또는 이식 가능한 기능만 사용하도록 스크립트를 다시 작성할 수 있습니다. 보편적인 번역 방법은 없습니다 -printf
. 지정자마다 다르므로 다른 도구가 필요합니다. %f
및 의 경우 %h
파일 이름의 일부이므로 쉽습니다. 파일 이름이 쉘 변수에 있는 경우 x
매개변수 확장 구성을 사용하여 기본 이름(접두사가 제거됨 */
)과 디렉토리 이름(접미사가 제거됨 /*
)을 추출할 수 있습니다.
find . -type f -exec sh -c 'for x do printf %s,%s\\n "${x##*/}" "${x%/*}"; done' sh {} +