사용자가 파일을 복사하고 붙여넣어 선택할 수 있는 스크립트를 만들었습니다. 그런 다음 파일에 대해 grep을 수행하십시오. 사용자가 숫자만 입력할 수 있도록 디렉토리의 각 파일 앞에 숫자를 넣는 것이 가능한지 궁금합니다.
내가 시도한 것:
ls -l
그런 다음ls | wc -l
사용자가 해당 파일 번호를 선택하도록 했지만 운이 좋지 않았습니다.- 다음으로
ls -i
파일의 노드 번호를 사용하여 grep을 시도했지만 성공하지 못했습니다.
답변1
에서는 키워드를 사용할 bash
수 ksh
있습니다 :zsh
select
select file in *; do
grep 'something' "$file"
done
select
목록을 표시할 때 사용법 지침을 제공하려면 다음을 설정하십시오.$PS3
앞으로예를 들면 다음 select
과 같습니다.
PS3='number of file to grep in, ^C to exit: '
답변2
ls 앞에 줄 번호를 넣는 가장 간단한 방법은 아마도
ls -1 | cat -n
그런 다음 파일 번호 N을 선택하고 시도해 볼 수 있습니다.
ls -1 | sed -n Np
답변3
그런데, inode 번호를 사용하고 다음을 사용할 수 있습니다 ls
.
ls -i
다음과 같이 출력됩니다.
$ ls -i
13107210 file
13238318 dir
13109301 script.sh
그러나 이 수치는 우리나라 cat -n
에 비하면 여전히 상당히 큰 수치이다. 그러나 이 방법의 가장 큰 장점은 항상 정확한 파일을 찾을 수 있다는 것입니다. 반면 cat -n
+를 사용하면 sed
두 명령 사이에 디렉터리에 새 파일이 생성되는 경우 다른 파일을 사용할 수 있습니다.
답변4
또한 percol, fzy, smenu 및 친구들도 확인해 보세요. 그들은 기꺼이 표준 입력을 취하고, 대화형 필터가 포함된 사용자 친화적인 선택 메뉴를 제공한 다음, 선택한 라인을 다시 파이프로 출력합니다.