Shell脚本返回兄弟姐妹的名字代替孩子

时间:2017-02-10 10:30:43

标签: linux bash ubuntu

我正在创建一个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在样本文件夹

1 个答案:

答案 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。