为 fswebcam 生成唯一的文件名
Generate unique filename for fswebcam
我在 ubuntu 中安装了 fswebcam
。我希望 fswebcam
提供输出为 img1、img2(如果有 img1)、img3、img4...等
我试过了:
sudo fswebcam img
它将文件存储为 img 但替换现有文件而不是存储为 img2.
是否有任何特定类型的 unix 命令来存储我指定的文件名?
我还想知道该特定命令是否存在。同时,我也需要这样做,我使用了如下解决方法(根据您的需要进行调整):
f() {
PREFIX="./img"
FILES=$(ls $PREFIX* 2> /dev/null)
LAST=$(sort -n <<<"${FILES//$PREFIX}" | tail -n1)
echo $PREFIX$((LAST+1))
}
FILES
包含所有由 \n
分隔的文件名。
LAST
什么都没有,或者 $PREFIX
.
之后的最大数
最后,函数 echo
将最后一个文件名加 1。
因此,一旦您定义了 f
(或更有意义的名称),您就可以这样调用您的命令:
sudo fswebcam $(f)
例子
$ ls
img1 img10 img11 img2 img3 img4 img5 img6 img7 img8 img9
$ echo $(f) # here I'm using "echo" instead of "sudo fswebcam"
./img12
f
一步一步
$ FILES=$(ls $PREFIX* 2> /dev/null)
$ cat <<<"$FILES"
./img1
./img10
./img11
./img2
./img3
./img4
./img5
./img6
./img7
./img8
./img9
$ LAST=$(sort -n <<<"${FILES//$PREFIX}" | tail -n1)
$ echo $LAST
11
$ echo $PREFIX$((LAST+1))
./img12
location="your location directory"
cd $location
ls
fname='filename'
i=1
j=1
sudo fswebcam $fname
if [ -f $fname ]
then
echo "exist"
while [ -f $fname$i ]
do
echo $fname$i
i=$((i + j))
done
mv $fname $fname$i
else
echo "oops not found"
fi
或者您可以只使用其内置的 strftime 功能来生成文件名中包含当前时间的每个文件
--save pic%Y-%m-%d_%H:%M:%S.jpg
我在 ubuntu 中安装了 fswebcam
。我希望 fswebcam
提供输出为 img1、img2(如果有 img1)、img3、img4...等
我试过了:
sudo fswebcam img
它将文件存储为 img 但替换现有文件而不是存储为 img2.
是否有任何特定类型的 unix 命令来存储我指定的文件名?
我还想知道该特定命令是否存在。同时,我也需要这样做,我使用了如下解决方法(根据您的需要进行调整):
f() {
PREFIX="./img"
FILES=$(ls $PREFIX* 2> /dev/null)
LAST=$(sort -n <<<"${FILES//$PREFIX}" | tail -n1)
echo $PREFIX$((LAST+1))
}
FILES
包含所有由 \n
分隔的文件名。
LAST
什么都没有,或者 $PREFIX
.
之后的最大数
最后,函数 echo
将最后一个文件名加 1。
因此,一旦您定义了 f
(或更有意义的名称),您就可以这样调用您的命令:
sudo fswebcam $(f)
例子
$ ls
img1 img10 img11 img2 img3 img4 img5 img6 img7 img8 img9
$ echo $(f) # here I'm using "echo" instead of "sudo fswebcam"
./img12
f
一步一步
$ FILES=$(ls $PREFIX* 2> /dev/null)
$ cat <<<"$FILES"
./img1
./img10
./img11
./img2
./img3
./img4
./img5
./img6
./img7
./img8
./img9
$ LAST=$(sort -n <<<"${FILES//$PREFIX}" | tail -n1)
$ echo $LAST
11
$ echo $PREFIX$((LAST+1))
./img12
location="your location directory"
cd $location
ls
fname='filename'
i=1
j=1
sudo fswebcam $fname
if [ -f $fname ]
then
echo "exist"
while [ -f $fname$i ]
do
echo $fname$i
i=$((i + j))
done
mv $fname $fname$i
else
echo "oops not found"
fi
或者您可以只使用其内置的 strftime 功能来生成文件名中包含当前时间的每个文件
--save pic%Y-%m-%d_%H:%M:%S.jpg