내 서버에 복사해야 하는 데이터 파일의 긴 목록이 있고 이름이 있습니다.
data_1.dat
data_2.dat
data_3.dat
...
data_100.dat
처음부터 숫자가 3씩 증가하는 모든 파일(예: , , , ...) data_1.dat
을 가져오고 싶습니다.data_4.dat
data_7.dat
data_10.dat
이것을 지정하는 방법이 있나요? 지금은 수동으로 사용하고 있지만 get data_4.dat
이를 자동화할 수 있는 방법이 있어야 합니다.
답변1
리눅스의 경우:
printf -- '-get data_%d.txt\n' $(seq 1 3 100) | sftp -b - [email protected]
BSD에서( seq(1)
볼 수 없음):
printf -- '-get data_%d.txt\n' $(jot 100 1 100 3) | sftp -b - [email protected]
답변2
bash
C 스타일 루프 구문이 지원되며 다음을 활용할 수 있습니다.
for ((i=1; i<=100; i+=3)); do echo file_$i.dat; done
echo file_$i.dat
파일에 대해 수행하려는 작업으로 바꿉니다 .
예:
$ for ((i=1; i<=100; i+=3)); do echo file_$i.dat; done
file_1.dat
file_4.dat
file_7.dat
file_10.dat
file_13.dat
file_16.dat
file_19.dat
file_22.dat
file_25.dat
file_28.dat
file_31.dat
file_34.dat
file_37.dat
file_40.dat
file_43.dat
file_46.dat
file_49.dat
file_52.dat
file_55.dat
file_58.dat
file_61.dat
file_64.dat
file_67.dat
file_70.dat
file_73.dat
file_76.dat
file_79.dat
file_82.dat
file_85.dat
file_88.dat
file_91.dat
file_94.dat
file_97.dat
file_100.dat