在Bash中使用包含空格的目录名
我试图通过for循环对名称中包含空格的目录执行一些操作。这就是我正在使用的在Bash中使用包含空格的目录名,bash,loops,directory,Bash,Loops,Directory,我试图通过for循环对名称中包含空格的目录执行一些操作。这就是我正在使用的 dirs=$(ls -d1 */ | cut -f1 -d'/') for dir in $dirs do echo "${dir}" mkdir -p $outputdir/"${dir}" cd "${dir}" for file in *.$inputformat 但无法
dirs=$(ls -d1 */ | cut -f1 -d'/')
for dir in $dirs
do
echo "${dir}"
mkdir -p $outputdir/"${dir}"
cd "${dir}"
for file in *.$inputformat
但无法操作名称中带有空格的目录。我还能做什么
我还能做什么
只需在模式上迭代。您的脚本可能如下所示:
for dir in */; do # !!
if [[ ! -e "$dir" ]]; then break; fi # or use shopt -s nullglob
echo "$dir"
mkdir -p "$outputdir/${dir}"
cd "${dir}"
for file in *."$inputformat"; do
echo "$file!"
done
cd -
done
使用
shopt-s nullglob
来处理不匹配的情况是很好的。在代码上添加一个shebang并粘贴到,尽管您需要做的第一件事是引用变量,避免使用ls
是脚本。这是整个代码:@Jetchisel我还应该使用什么?不要期望对未引用的变量进行分词(例如,用于$dirs中的dir
)执行任何正常操作。使用shell通配符(如*/中的dir的)和查找…-print0
。请查看是否有效。谢谢!