2017-11-21 6 views
0

ls을 실행할 때 다음을 참조하십시오. 나는 새로운 라인 다음 코드는 $i for i in $(ls | grep -F "Screen Shot"); do rm $i; donegrep이 출력되는 곳에 새로운 줄을 유지하십시오.

에 대한 다음 shot 파일 screen을 찾으려고

Screen Shot..

10-15 
BashStorage 
blah.csv 
LockScreen.app 
NetsuiteBFN 
Screen Shot 2017-10-26 at 11.09.08 AM.png 
Screen Shot 2017-11-02 at 12.24.13 PM.png 
Screen Shot 2017-11-10 at 9.20.33 AM.png 
Screen Shot 2017-11-10 at 9.21.29 AM.png 
Screen Shot 2017-11-20 at 10.26.24 AM.png 
Screen Shot 2017-11-20 at 10.29.18 AM.png 
Screen Shot 2017-11-20 at 10.30.40 AM.png 
Screen Shot 2017-11-20 at 10.31.55 AM.png 
Screen Shot 2017-11-20 at 10.34.11 AM.png 
Screen Shot 2017-11-20 at 10.55.34 AM.png 
Screen Shot 2017-11-20 at 10.56.44 AM.png 
Screen Shot 2017-11-20 at 10.56.54 AM.png 
Screen Shot 2017-11-20 at 10.59.20 AM.png 
finalResourceUrls.txt 
good 
lockScreen 
lockScreen.zip 
ls.txt 
x 

ls | grep -F 'Screen Shot' 반환의 스크린 샷 항목을 각각 모든 인스턴스를 삭제하려면

이고 구분 기호로 space을 사용하므로 실패합니다.

,363,210

은 또한 표준 출력 터미널 때 그렙 새로운 라인을 인쇄하는 것으로 관찰되지만 I 파일로 재지시 I 가변 출력을 설정하면, 새로운 라인은 더 없다, (ls | grep -F "Screen Shot") > shots.txt

그러나 을 유지 새로운 라인

shots="$(ls | grep -F "Screen Shot")"

Screen Shot 2017-10-26 at 11.09.08 AM.png Screen Shot 2017-11-02 at 12.24.13 PM.png Screen Shot 2017-11-10 at 9.20.33 AM.png Screen Shot 2017-11-10 at 9.21.29 AM.png Screen Shot 2017-11-20 at 10.26.24 AM.png Screen Shot 2017-11-20 at 10.30.40 AM.png Screen Shot 2017-11-20 at 10.31.55 AM.png Screen Shot 2017-11-20 at 7.01.32 PM.png Screen Shot 2017-11-21 at 11.49.15 AM.png 
  1. 어떻게 스크린 샷 항목과 드 반복 않습니다 그들을 불러요?
  2. grep에서 새 라인을 유지하려면 어떻게해야합니까?

편집 : 사이러스는 여전히

+2

'rm Screen \ Shot \ *'또는'rm "스크린 샷"* "? – Cyrus

+0

@Cyrus 감사합니다! 그게 효과가 있었지만 grep이 작동하는 방식에 관심이 많아서 여기에 질문을 남겨 둘 것입니다. – Goldfish

+0

Btw :: [왜 * l *을 파싱하지 않습니까?] (http://unix.stackexchange.com/questions/128985)/why-not-parse-ls) – Cyrus

답변

1

당신은 여전히이 작업을 수행 할 수 있습니다, 당신은 단지 IFS (내부 필드 분리를 지정해야합니다 질문에 대한 그렙 행동이 답을 찾고 1. 질문에 대한 답변을 작업하고있다 (주석 참조)).

shots="$(ls | grep -F "Screen Shot")" 
echo $shots 
>some_long_one_line_blob 

IFS='$\n' 
echo $shots 
>line 
>by 
>line 
>output 

또는 당신에게 줄 바꿈 문자를 평가되는 에코 할 -E 인수를 할 수 있습니다.

echo -E "$shots" 
>line 
>by 
>line 
>output 
+0

그게 내가 찾고 있던거야 : – Goldfish

+0

나는 당신이 출력의 각 줄에 for 루프와 같은 것을 사용하고있는 스크립트로 이것을 굽고있는 IFS를 사용하고 싶다. 문제에 대한 더 나은 해결책이 될 것이라고 생각되는 두 번째 예를 추가했습니다. –

+0

적절한 해결책은 'echo'문자열을 인용하는 것입니다. – tripleee