2012-06-04 3 views
4

디렉토리에서 모든 파일 이름을 읽은 다음 파일 이름에 따라 스크립트를 작성해야합니다 (예 : R1 또는 R2가 포함 된 경우). 예를 들어 이름에 R1을 포함합니다.Bash에서 디렉토리의 파일 이름 읽기

아무도 나에게이 일을하는 방법을 알려 줄 수 있습니까?

#!/bin/bash 

FILES="path to the files" 

for f in $FILES 
do 
    cat $f 
done 

이 단지 변수 파일이 디렉토리가 가지고 있지 파일이 저를 보여줍니다

내가 할 수 있었던 유일한 방법입니다.

dir="path to the files" 
for f in "$dir"/*; do 
    cat "$f" 
done 

당신이 원하는 최종 목표로 무엇을 설명 달성하기 :

답변

10

문제 해결 작은 변화를 만들려면

shopt -s nullglob 
dir="path to the files" 
substrings=(R1 R2) 
for substring in "${substrings[@]}"; do 
    cat /dev/null "$dir"/*"$substring"* >"${substring}.out" 
done 

cat 것을 하나의 호출에 여러 파일을 할 수 있습니다 - - 실제로 그렇게하지 않으면 고양이를 전혀 사용할 필요가 없습니다.

0

간단한 해킹 :

LS -al R1 | awk '{print $ 9}'> 출력 파일 이름 R1

ls -al R2 | awk '{print $ 9}'> outputfilenameR2

+1

파일 이름에 공백이 있으면'print $ 9'는 첫 번째 부분 만 골라냅니다. 그리고 왜 [ls의 출력을 파싱해서는 안되는] (http://mywiki.wooledge.org/ParsingLs)의 다른 경고들을 보라. –

관련 문제