시스템의 모든 파일을 검사하고 싶습니다. 이렇게 하려면 시스템의 모든 파일에 대한 전체 경로가 필요합니다. 내 초기 아이디어는 다음과 같이하는 것이 었습니다.
for file in $(sudo find / ); do
if [ -d $file ]; then
and so on.
그러나 find의 출력을 이런 방식으로 처리하는 것은 나쁜 습관이라는 것을 읽었습니다. 그렇다면 옳은 일은 무엇입니까?
(ls -RF | grep "/$"와 같은 것을 시도했습니다. 그러나 이는 디렉토리 이름만 제공하지만 시스템의 모든 파일, 디렉토리 등에 대한 전체 경로가 필요합니다.)
답변1
find의 -exec 옵션을 사용하십시오. 예제 스크립트는 다음과 같이 작성됩니다.
sudo find / -type d -exec myprog {} \;
{}는 발견된 모든 파일(이 경우 디렉터리)로 대체됩니다.
각 항목이 디렉토리인지 일반 파일인지 또는 다른 항목인지에 따라 다른 작업을 수행하려면 해당 논리를 "myprog.sh"에 넣거나 다른 유형 선택으로 find를 여러 번 호출하면 됩니다.
편집: 단일 인스턴스 스크립트 옵션의 경우 myprog를 다음과 같이 작성하십시오.
#! /bin/bash -
while IFS= read -rd '' FILE; do
if [ -d "$FILE" ]; then
...
done
그리고 전화해
find / -print0 | myprog
(지원하지 않는 경우 로 교체하세요 -print0
.)-exec printf '%s\0' {} +
find
-print0
답변2
모든 파일을 인쇄하려면
find / -type f