디렉토리에있는 모든 파일의 절대 경로를 포함하는 파일 (바람직하게는 .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에서 어떻게 이것을 할 수 있습니까?
디렉토리에있는 모든 파일의 절대 경로를 포함하는 파일 (바람직하게는 .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에서 어떻게 이것을 할 수 있습니까?
답변:
ls -d "$PWD"/* > listOfFiles.list
ls -d -1 $PWD/*
-1옵션은 한 줄에 하나의 파일 이름을 보장합니다
ls출력이 파일 또는 터미널인지를 감지합니다.
find답변은 더 많은 파일을 나열하더라도 실패하지 않기 때문에 더 나은 솔루션입니다.
찾기를 사용할 수 있습니다. 일반 파일 만 원한다고 가정하면 다음을 수행 할 수 있습니다.
find /path/to/dir -type f > listOfFiles.list
다른 유형의 파일을 원하는 경우 유형 매개 변수를 적절하게 조정할 수 있습니다.
ls. 이것은 find비 디렉토리의 경우 서브 디렉토리를 반복하지만 인수 -maxdepth 1앞에 추가해야합니다 -type.
다음에 유의하십시오.
ls -d "$PWD"/* > listOfFiles.list
디렉토리에서 (숨겨지지 않은) 파일 목록을 계산하고 목록을 전달하는 것은 쉘입니다 ls. ls그 목록을 여기에 인쇄하기 만하면됩니다.
printf '%s\n' "$PWD"/*
printf수천 개의 파일이있는 경우 '명령 줄이 너무 깁니다'라는 오류가 발생 printf하지 않습니다.
printf빌트인이 아닌 쉘 pdksh과 그 파생어 또는 대부분의 Bourne 쉘 버전은 예외입니다 . 이에 비해 한 가지 단점 ls -d은 숨겨지지 않은 파일이 없으면 파일이 인쇄 /path/to/*되지만 ls대신 존재하지 않는 파일에 대한 오류가 발생한다는 것입니다.
또 다른과 방법 tree:하지가 반복적으로, 여기 간다 언급과는 달리 찾기 또는 LS 당신은 (같은 오류가없는 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에서
sudo apt install tree우분투 sudo yum install tree에 CentOS에 sudo zypper install tree오픈 수세에
brew install treeMac
과거의 Linux 환경에서는 resolve상대 경로를 절대 경로로 만드는 것을 포함하여 경로를 표준화 하는 명령이 있었습니다 . 지금은 찾을 수 없으므로 해당 조직의 누군가가 작성한 것일 수 있습니다.
Python 또는 Perl 표준 라이브러리 (및 아마도 다른 언어)의 함수를 사용하여 고유 한 스크립트를 만들 수 있습니다.
resolve.py :
#!/bin/env python
import sys
import os.path
for path in sys.argv:
print os.path.abspath(path)
resolve.pl :
#!/bin/env perl
use warnings;
use Cwd qw ( abs_path );
foreach (@ARGV) {
print abs_path($_), "\n";
}
그런 다음 다음을 사용하여 문제점을 해결하십시오.
resolve.py * > listOfFiles.list
이 명령으로 다음과 같은 작업을 수행 할 수도 있습니다.
cd /root/dir1/dir2/dir3
resolve.py ../../dir4/foo.txt
# prints /root/dir1/dir4/foo.txt