디렉터리에 있는 각 파일의 절대 경로를 포함하는 파일(바람직하게는 .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
열에r
aw를 인쇄합니다1
C
.-N
, NUL은 파일 이름에 없는 유일한 문자이기 때문에 출력 레코드는 개행 구분(줄)이 아닌 NUL로 구분됩니다.N
: 일치하는 파일이 없으면 공백(nullglob
) 으로 확장합니다.D
: 숨겨진 파일(dotglob
)이 포함되어 있습니다.-.
:만 포함정기적인.
심볼릭 링크 확인() 이후의 File()-
.
그런 다음 다음을 수행할 수 있습니다.
xargs -0 rm -f -- < listOfFiles.list
예를 들어, 다음 파일을 삭제하십시오.
또한 glob 한정자에 수정자를 사용하여 :P
glob에서 확장된 파일에 대한 동등한 결과를 얻을 수도 있습니다(심볼릭 링크 구성 요소에서 전체 경로 제외).realpath()
print -rNC1 -- *(ND-.:P) > listOfFiles.list
답변4
여기에 언급되지 않은 또 다른 방법 은 재귀적이며 find 또는 ls와 달리 오류(예: , ) tree
가 없으며 파일을 다른 명령에 공급하려는 경우 절대 경로를 얻을 수도 있습니다.Permission denied
Not a directory
xargs
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 tree
CentOS/Fedora에서
sudo zypper install tree
OpenSUSE에서