내 폴더에 10,000개의 파일이 있는데 모두 확인해야 합니다. 모두 A0001.png, A0002.png, A0003.png, ...A0100.png, ...A0999.png, ...A1000.png, ...A09999.png, ...A10000이라고 합니다. png.
10개씩 열어서 찾아보고 닫고 다음 10개를 열고 싶은데 아직 터미널 사용법이 익숙해지는 단계라 어떻게 해야할지 모르겠네요?
내가 할 때 :
open A000*.png
너무 많이 열어
답변1
존재하다 zsh
:
open A000*.png([1,10])
처음 10개.
에서는 bash
언제든지 다음을 수행할 수 있습니다.
files=(A000*.png)
open "${a[@]:0:10}"
또는 루프에서:
while ((${#files[@]})); do
open "${files[@]:0:10}"
files=("${files[@]:10}")
done
이는 에서도 작동 zsh
하지만 에서는 zsh
약간 덜 어색한 구문을 사용하여 수행할 수 있습니다.
while (($#files)) {
open $files[1,10]
files[1,10]=()
}
또 다른 옵션은 다음을 사용하는 것입니다 xargs
.
printf '%s\0' A000*.png | xargs -0n10 open
이는 open
표준 입력에 영향을 미칩니다. 비슷한 특성을 가진 함수가 zsh
있습니다 .zargs
autoload zargs # in ~/.zshrc
zargs -n 10 A000*.png -- open
open
이렇게 하면 해당 10개 파일로 원하는 모든 작업을 수행하는 함수로 정의할 수 있습니다 . 예를 들면 다음과 같습니다.
open() {
image_viewer $argv
read -q '?continue? ' || return 255
}
답변2
루프를 사용하고 사용자 입력을 캡처하면 다음을 얻을 수 있습니다.
#!/bin/bash
# Store all list of files you want with extension png
arr=(./*.png)
for ((i=0; i<${#arr[@]};))
do
# -s: do not echo input character
# -n 1: read only 1 character (separate with space)
read -s -n 1 key
for ((j=0; j<10; j++, i++))
do
if [[ $key = "" ]]; then
open "${arr[$i]}"; # <--- This is where you will open your file.
fi
done
done