디렉터리의 여러 파일을 하나의 명령으로 참조하는 방법

디렉터리의 여러 파일을 하나의 명령으로 참조하는 방법

원래 디렉터리에서 왔으며 특정 파일 이름 패턴을 가진 여러 입력 파일을 가져와야 하는 명령이 있습니다. 예를 들어:

디렉토리에

/home/mydir/

나는 파일을 가지고 있습니다 :

A.dat
B.dat
C.dat
readme.doc

".dat"로 끝나는 모든 파일을 이 명령에 전달하는 방법을 알고 싶습니다. 이는 다음과 같습니다.

command A.dat B.dat C.dat > /home/outputdir/output.dat

예를 들어 파일 이름을 목록에 저장하여 Python에서 이 작업을 수행할 수 있지만 셸에서는 어떻게 수행해야 합니까? 감사합니다.

답변1

표준 UNIX 쉘은 다음과 같은 작업을 수행합니다.와일드카드;특수 문자(예: 한 문자( ?) 또는 임의 개수의 문자( *))를 사용하여 표현됩니다. 예제를 사용하려면 다음을 실행하면 됩니다(첫 번째 문자는 $입력한 내용이 아니라 명령 프롬프트를 나타냄).

$ command /home/mydir/*.dat > /home/outputdir/output.dat

쉘은 이를 다음으로 확장합니다.

$ command /home/mydir/A.dat /home/mydir/B.dat /home/mydir/C.dat > /home/outputdir/output.dat

실제로 명령을 호출하기 전에. *"/home/mydir에서 ".dat"로 끝나는 모든 파일 이름을 가져옵니다 .

동일한 입력 파일이 주어지면 명령의 일부 변형의 경우:

# all of the sample input files have a single letter before the ".dat"
$ command /home/mydir/?.dat > /home/outputdir/output.dat

# the square brackets say "any (one) of these characters"
$ command /home/mydir/[ABC].dat > /home/outputdir/output.dat

답변2

대답은 실제로 사용하려는 도구에 따라 다릅니다. 일부는 여러 파일을 매개변수로 허용하도록 설계되었으며 다음과 같이 수행할 수 있습니다.

/path/to/some/tool file1 /path/to/file2 /path/to/lotsafiles/*

다른 것들은 파일을 인수로만 허용하도록 설계되었으므로 주소를 지정하려는 각 파일에 대해 호출을 반복해야 하며 이는 다음과 같이 수행될 수 있습니다.

for file in file1 /path/to/file2 /path/to/lotsafiles/*; do
    /path/to/some/tool "$file"
done

한 번에 하나의 파일만 지정해야 하는지 확인하려면 프로그램 매뉴얼 페이지( man tool)를 참조하십시오.

관련 정보