我写了一个bash只是为了显示给定目录的所有文件的名称,但是当我运行它时它打破了有空格的文件名。
if [ $# -eq 0 ]
then
echo "give a source directory in the command line argument in order to rename the jpg file"
exit 1
fi
if [ ! -d "$1" ]; then
exit 2
fi
if [ -d "$1" ]
then
for i in $(ls "$1")
do
echo "$i"
done
fi
运行bash脚本时,我得到以下内容
21151991jatinkhurana_image
(co
py).jpg
24041991jatinkhurana_im
age.jpg
35041991jatinkhurana_image
.jpg
我到目前为止尝试的事情是重置IFS变量,如IFS = $(echo -en" \ t \ n \ 0"),但没有发现任何变化....
如果有人知道请帮帮我.....
答案 0 :(得分:4)
不要遍历ls
的结果。解析ls会让世界变得更糟(好读:Why you shouldn't parse the output of ls)。
相反,您可以使用*
扩展到给定目录中的现有内容:
for file in /your/dir/*
do
echo "this is my file: $file"
done
使用变量:
for file in $dir/*
do
echo "this is my file: $file"
done