절대 경로를 사용하여 디렉터리의 모든 파일을 나열하는 방법

절대 경로를 사용하여 디렉터리의 모든 파일을 나열하는 방법

디렉터리에 있는 각 파일의 절대 경로를 포함하는 파일(바람직하게는 .list 파일)이 필요합니다.

예 dir1: file1.txt file2.txt file3.txt

listOfFiles.list:

/Users/haddad/dir1/file1.txt
/Users/haddad/dir1/file2.txt
/Users/haddad/dir1/file3.txt

Linux/mac에서 이 작업을 어떻게 수행할 수 있나요?

답변1

찾기를 이용하시면 됩니다. 일반 파일만 필요하다고 가정하면 다음을 수행할 수 있습니다.

find /path/to/dir -type f > listOfFiles.list

다른 유형의 파일이 필요한 경우 유형 매개변수를 적절하게 조정할 수 있습니다.

답변2

ls -d "$PWD"/* > listOfFiles.list

답변3

다음 사항에 유의하세요.

ls -d "$PWD"/* > listOfFiles.list

이것이 하는 일은 디렉터리에 있는 (숨겨지지 않은) 파일 목록을 계산하고 그 목록을 에 전달하는 것입니다 ls. ls여기에서 목록을 인쇄하면 이 작업도 수행할 수 있습니다.

printf '%s\n' "$PWD"/* > listOfFiles.list

모든 종류의 파일(디렉토리 포함)을 포함한 숨겨진 파일은 포함되지 않으며 Bourne/POSIX/rc와 유사한 셸에서는 /current/wd/*디렉터리에 숨겨진 파일이 아닌 경우 출력을 얻게 됩니다. 또한 줄 바꿈은 파일 경로의 모든 문자만큼 유효하므로 줄 바꿈을 사용하여 파일 경로를 구분하는 경우 결과 파일을 사용하여 파일 목록으로 안정적으로 돌아갈 수 없습니다.

zsh셸을 사용하면 다음을 수행할 수 있습니다.

print -rNC1 $PWD/*(ND-.) > listOfFiles.list

어디:

  • -rC1열에 raw를 인쇄합니다 1 C.
  • -N, NUL은 파일 이름에 없는 유일한 문자이기 때문에 출력 레코드는 개행 구분(줄)이 아닌 NUL로 구분됩니다.
  • N: 일치하는 파일이 없으면 공백( nullglob) 으로 확장합니다.
  • D: 숨겨진 파일( dotglob)이 포함되어 있습니다.
  • -.:만 포함정기적인.심볼릭 링크 확인() 이후의 File() -.

그런 다음 다음을 수행할 수 있습니다.

xargs -0 rm -f -- < listOfFiles.list

예를 들어, 다음 파일을 삭제하십시오.

또한 glob 한정자에 수정자를 사용하여 :Pglob에서 확장된 파일에 대한 동등한 결과를 얻을 수도 있습니다(심볼릭 링크 구성 요소에서 전체 경로 제외).realpath()

print -rNC1 -- *(ND-.:P) > listOfFiles.list

답변4

여기에 언급되지 않은 또 다른 방법 은 재귀적이며 find 또는 ls와 달리 오류(예: , ) tree가 없으며 파일을 다른 명령에 공급하려는 경우 절대 경로를 얻을 수도 있습니다.Permission deniedNot a directoryxargs

tree -fai /pathYouWantToList >listOfFiles.list

옵션 의미:

-a     All  files  are  printed.  By default tree does not print hidden files (those beginning with a dot
       `.').  In no event does tree print the file system constructs `.'  (current  directory)  and  `..'
       (previous directory).

-i     Makes tree not print the indentation lines, useful when used in conjunction with the -f option.

-f     Prints the full path prefix for each file.

설치하다 tree:

sudo apt install tree우분투/데비안에서

sudo yum install treeCentOS/Fedora에서

sudo zypper install treeOpenSUSE에서

관련 정보