我正在创建一个shell脚本来创建文件夹中的视频缩略图。
拳头步骤是获取该文件夹中的视频名称。
我的目录名是9feb。在该目录中,我有
文件夹folder 1
folder 2
folder 3
sample
tst.sh
tst.sh是shell脚本
#!/bin/bash
SRC= /home/user4/media/videos/9feb/sample
for FILE in `ls $SRC`
do
echo $FILE
done
我想获取示例文件夹中的文件名,但脚本返回脚本所在的文件夹和文件名。
输出:
folder 1
folder 2
folder 3
sample
tst.sh
期望的输出
a.mp4
b.mp4
a.mp4和b.mp4在样本文件夹
中答案 0 :(得分:1)
试试这个:
#!/bin/bash
SRC=/home/user4/media/videos/9feb/sample
for FILE in "$SRC"/*
do
echo $FILE
done
您的问题可能是=
与路径之间的空格。
不建议解析ls
的输出,如果文件名具有特殊字符甚至空格,则使用命令替换将会中断。从这个角度来看,Globbing(*
)是安全的,并且避免创建子shell。
请注意,如果您需要提取文件的名称(没有路径),您可以这样做:
FILE="${FILE%/}" # Remove trailing slash, if any
NAME="${FILE##*/}" # Remove all up to and including last slash
您也可以使用:
NAME="$(basename "$FILE")"
有些人会发现它更具可读性,但需要花费一个子shell。