rjs*_*ing 5 bash command-line ls
当在命令行中输入目录时,这个:
ls -d -1 "/Volumes/Development/My Project/Project"/**/* | grep \.png$
Run Code Online (Sandbox Code Playgroud)
打印以...结尾的所有文件的列表.png.
但是当我尝试创建脚本时:
#! /bin/bash
clear ;
# Tempoary dir for processing
mkdir /tmp/ScriptOutput/ ;
wdir="/Volumes/Development/My Project/Project" ;
echo "Working Dir: $wdir" ;
# Get every .PNG file in the project
for image in `ls -d -1 "$wdir"/**/* | grep \.png$`; do
...
done
Run Code Online (Sandbox Code Playgroud)
我收到错误:
cp: /Volumes/Development/My: No such file or directory
Run Code Online (Sandbox Code Playgroud)
这space是一个问题,但我不知道为什么?
另一种选择是改变IFS:
OLDIFS="$IFS" # save it
IFS="" # don't split on any white space
for file in `ls -R . | grep png`
do
echo "$file"
done
IFS=$OLDIFS # restore IFS
Run Code Online (Sandbox Code Playgroud)
阅读更多关于IFS的信息man bash.
如果您喜欢使用while read管道创建的子进程,您可以:
find . -name '*.png' | while read FILE
do
echo "the File is [$FILE]"
done
Run Code Online (Sandbox Code Playgroud)