파일 이름 메뉴를 표시하고 사용자가 숫자를 입력하여 파일을 선택할 수 있도록 합니다.

파일 이름 메뉴를 표시하고 사용자가 숫자를 입력하여 파일을 선택할 수 있도록 합니다.

사용자가 파일을 복사하고 붙여넣어 선택할 수 있는 스크립트를 만들었습니다. 그런 다음 파일에 대해 grep을 수행하십시오. 사용자가 숫자만 입력할 수 있도록 디렉토리의 각 파일 앞에 숫자를 넣는 것이 가능한지 궁금합니다.

내가 시도한 것:

  • ls -l그런 다음 ls | wc -l사용자가 해당 파일 번호를 선택하도록 했지만 운이 좋지 않았습니다.
  • 다음으로 ls -i파일의 노드 번호를 사용하여 grep을 시도했지만 성공하지 못했습니다.

답변1

에서는 키워드를 사용할 bashksh있습니다 :zshselect

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 및 친구들도 확인해 보세요. 그들은 기꺼이 표준 입력을 취하고, 대화형 필터가 포함된 사용자 친화적인 선택 메뉴를 제공한 다음, 선택한 라인을 다시 파이프로 출력합니다.

관련 정보