연속된 숫자 접미사가 있는 파일 이름을 선택하는 방법은 무엇입니까?

연속된 숫자 접미사가 있는 파일 이름을 선택하는 방법은 무엇입니까?

나는 물건을 저장하는 것을 좋아해서 저장하고 싶습니다 .bash_history.

스크립트를 사용하여 디렉토리에 복사하고 싶습니다. 여기처럼

#!/bin/bash
#Something here? number=~/Desktop/Coding/Bash\ Histories/bash_history "?"
cp ~/.bash_history ~/Desktop/Coding/Bash\ Histories/bash_history #$number "?"

하지만 이미 등 의 파일이 있습니다 bash_history.bash_history 2bash_history 3

가장 큰 숫자(이 경우에는 5)를 확인하고 싶습니다. 존재 한다면 bash_history 5이름을 지정하고 싶습니다 bash_history 6.

그렇다면 bash_history 11111이름을 붙이고 싶습니다 bash_history 11112.

if여기서 어떤 명령을 조합해서 사용해야 할지 잘 모르겠습니다 grep.

답변1

ls, sort및 를 사용하여 tail이 작업을 수행 할 수 있습니다 cut.

먼저 모든 파일에 번호가 있도록 이름을 bash_history로 바꾸세요. bash_history 1그런 다음 다음 명령을 실행하여 다음 파일을 복사합니다.

#!/bin/bash

D=~/Desktop/Coding/Bash\ Histories

num=$(ls "$D" | cut -d ' ' -f 2 | sort -nr | head -1)
num=$(( num + 1 ))
cp ~/.bash_history "$D/bash_history $num"

ls $D"storage" 디렉터리에 있는 파일 만 나열합니다. 각 이름( bash_history 16예: 경로 제외) 에서 두 번째 필드(number )를 cut -d ' ' -f 2분할하여 가져옵니다 . 문자열이 먼저 나오므로 이 방법으로 찾은 숫자는 숫자순으로() 역순( ) 으로 정렬됩니다 . 해당 목록(반대임을 기억하세요)에서 가장 큰 숫자인 첫 번째 숫자를 선택합니다. 해당 숫자를 증가시켜 다음 파일에 사용합니다.' '16-r-n102

먼저 크기 순서(예: 5자리)를 결정한 다음 앞에 오는 0을 직접 가져오는 데 사용하는 것을 선호합니다 printf %05d $num(이렇게 하면 파일이 알파벳순으로 숫자 순서와 동일해집니다(적어도 100000에 도달할 때까지)).

관련 정보