스크립트에 몇 가지 문제가 있습니다.
1)시 뱅 라인에 root /가 없습니다. 당신은 #!bin/bash
가지고 있고 그것은 그렙에 -v
옵션은 공간 사이가
2) #!/bin/bash
해야한다 - 그리고 V를 (그리고)
3) 당신은 실제로 return_content를 호출하지 않는 안 함수의 마지막 라인에서 함수 내에서 변수를 참조하십시오. 같은 아마도 마지막 줄이 보일 것입니다 : 심지어 모든 것을 해결 한 후, 당신은 print0이 (가 인해 -print0에 널 (null)을 포함하는) 그것을 바이너리 데이터를 전달하기 때문에 grep을 불평 찾을 수 있습니다
find . -name "*.txt" -type f -print0|grep -v CVS|\
xargs -0 cvs tag $(return_content)
4) grep이 텍스트를 기다리고 있습니다. 이 같은 밖으로 grep으로 grep 명령의 기능을 수행하고 잘라 find 명령에 더 많은 인수를 사용할 수 있습니다
find . -type d -name CVS -prune -o -type f -name "*.txt" -print0 |\
xargs -0 cvs tag $(return_content)
발견 (아래 등) 현재 디렉토리에있는 모든 항목을 재귀 적, 아무것도 폐기 CVS 이하의 디렉토리이며 나머지는 * .txt 파일 만 선택합니다.
[email protected]:~/junk/find$ find . -type d -name CVS -prune -o \
-type f -name "*.txt" -print0 | xargs -t -0 ls -la
ls -la ./one two.txt ./three four.txt
-rw-r--r-- 1 bjb bjb 0 Jun 27 00:44 ./one two.txt
-rw-r--r-- 1 bjb bjb 0 Jun 27 00:45 ./three four.txt
[email protected]:~/junk/find$
: 스크립트가 결과를 보여줄 것이다, 그래서 나는 디렉토리의 이름에 공백과가 .txt 확장자를 가진 파일의 몇 가지를 만들어
find . -type d -name CVS -prune -o -type f -name "*.txt" -print0 |\
xargs -t -0 echo ls -la
:
내가 가진 그 라인의 내 버전을 테스트
-t 인수를 사용하면 xargs가 실행하려고하는 명령을 표시합니다. 나는 cvs tag
대신에 ls -la
을 사용했습니다. 이것은 cvs와 비슷하게 작동합니다.
왜 태그에 ** 모든 ** 파일에 해당 태그가 태그되지 않습니까? 이것이 CVS 작업 디렉토리에서 실행되고 있습니까? –
네 ina Cvs 디렉토리 .. 그 요구 사항은 txt 파일에만 태그해야합니다. – user2475677