cat을 사용하여 디렉토리의 모든 파일을 동시에 표시하십시오.

cat을 사용하여 디렉토리의 모든 파일을 동시에 표시하십시오.

저는 선택된 전체 디렉토리에 있는 모든 파일의 내용을 볼 수 있는 스크립트를 작성하고 있지만 어떻게 해야 할지 잘 모르겠습니다.

출력을 또는 ls로 파이프하려고 하는데 작동하지 않는 것 같습니다.catless

사용해야 하는 명령줄 변수가 있습니까? 아니면 필요한 작업을 수행하는 명령이 있습니까?

기억나지 않는 특정 파일을 찾을 때마다 그 파일이 무엇인지 빠르게 확인할 수 있기를 바랍니다.

답변1

이것이 바로 cat목적입니다. 디렉토리에 있는 모든 파일의 내용을 표시하려면 다음을 사용하십시오.

cat *

쉘이 *파일 목록으로 확장됩니다. 숨겨진 파일도 포함하려면 다음을 사용하십시오.

cat * .*

또는

shopt -s dotglob; cat *

그러나 파일을 빠르게 식별하려는 경우에는 특히 파일이 매우 긴 경우에는 이것이 최선의 방법이 아닐 수 있습니다.

head이 경우 다음을 사용하는 것이 도움이 될 수 있습니다.

head *

디렉토리에 있는 각 파일의 처음 10줄이 표시되며 헤더 줄에는 파일 이름이 표시됩니다.

답변2

바라보다"왜 `ls`를 구문 분석하지 *않나요*?"파싱된 출력이 ls좋은 접근 방식이 아닌 이유.

스크립트의 경우:

#!/bin/sh

dir="$1"
PAGER="${PAGER:-cat}"

test -d "$dir" || exit 1

find "$dir" -type f -exec "$PAGER" {} \;

이는 첫 번째 명령줄 인수를 가져와 이를 변수에 할당합니다 dir. 이 변수는 사용자가 아직 설정하지 않은 경우 다른 값으로 PAGER설정됩니다 .cat

주어진 디렉토리가 유효한 디렉토리 이름이면 find해당 디렉토리 또는 하위 디렉토리에 있는 모든 일반 파일(숨겨진 일반 파일 포함)을 호출기에 전달하는 데 사용됩니다.

파일 검색을 특정 디렉터리의 첫 번째 수준으로만 제한하려면 옵션 앞에 를 삽입하세요 -maxdepth 1.-execfind

그걸 써:

  • cat모든 파일은 다음 위치에 있습니다 /tmp.

    $ ./script /tmp
    
  • 홈 디렉터리에 있는 모든 파일의 처음 10줄을 확인하세요.

    $ PAGER=head ./script "$HOME"
    
  • ~/stories카탈로그의 모든 스토리를 읽어보세요 :

    $ PAGER=less ./script "$HOME/stories"
    

확장하다:

#!/bin/sh

dir="$1"
suf="$2"
PAGER="${PAGER:-cat}"

test -d "$dir" || exit 1

find "$dir" -type f -name "*$suf" -exec "$PAGER" {} \;

이렇게 하면 스크립트가 추가 파일 이름 접미사를 사용할 수 있습니다.

$ ./script /tmp .txt

관련 정보