하나의 명령에서 두 명령을 실행하는 방법


0

나는하고 싶다.

  1. 특정 폴더 찾기
  2. 그들의 이름을 되풀이하다
  3. ls -l 그들의 내용

내 문제는 내가 어떻게 결합해야할지 모르겠다. echo {} 그리고 ls -l {} 하나의 찾기 명령.

echo에 대한 줄 :

sudo find / -type d -name 'yt' -exec echo {} \;

ls의 줄 :

sudo find / -type d -name 'yt' -exec ls -l {} \;

이 두 가지를 어떻게 결합 할 수 있습니까?

참고 : 가능한 경우 xargs를 사용하지 않는 것이 좋습니다. 파일 이름을 올바르게 이스케이프하는 데 문제가 있기 때문입니다.

답변:


1

왜 그냥 두 가지 다른 -exec 같은 옵션 find 명령?

이 작품은 나를 위해 :

$ find --version
find (GNU findutils) 4.4.2
$ find . -type d -name mydir -exec echo {} \; -exec ls -l {} \;
./mydir
total 0
-rw-rw-r-- 1 daniel daniel 0 févr. 25 15:32 myfile

0

이것은 일반 솔루션이 아니지만 디렉토리를 검색 한 이후에 유용합니다.

sudo find / -type d -name 'yt'-execdir readlink -f {} \; -exec ls -l {} \;

execdir은 찾은 파일과 일치하는 하위 디렉토리에서 명령을 실행합니다. 디렉토리를 검색하므로 디렉토리 자체이며 readlink -f는 전체 경로를 제공합니다. 두 번째 -exec는 다른 쪽에서 디렉토리를 다시 일치시키고 "ls -"를 수행합니다.

첫 번째 execdir에서 jsut echo를 사용하면 전체 경로는 작성되지 않지만 마지막 디렉토리만으로는 충분하지 않을 수 있습니다.


0

여기에서 쉽게 인쇄 명령을 사용할 수 있습니다.

$sudo find / -type d -name 'bin' -print  -exec ls -l {} \;

예를 들어,

  1. bin 폴더 찾기
  2. 이름을 말하거나 이름을 프린트하다.
  3. ls -l 그들의 내용 - 내용을 나열합니다.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.