使用ls中的查找原因换行符在目录名称中使用bash空格



我无法处理文件名中的空格

脚本:使用find我选择所有目录,它们被馈送到ls中,用于计算目录中的文件数量

bash代码:

#!/bin/bash
for adir2 in $(find . -type d);
do
echo "[$adir2]"
DIRCOUNT=$(ls -1A $adir2 |wc -l)
if [ $DIRCOUNT -eq 0 ]; then
echo $adir2 "is empty"
fi
done

测试设置:

mkdir testdir
cd testdir
mkdir 01 dir

在此处运行脚本

结果:

[.]
[./dir]
./dir is empty
[./01]
ls: cannot access './01': No such file or directory
./01 is empty
[dir]
dir is empty

我正在使用Ubuntu 20

备注:以下不起作用:

find /path/to/dir -empty -type d

显示所有目录。显然,空房子不在那里。该位置是一个带有ext4分区的外部USB驱动器。

这应该是你想要的:

#!/usr/bin/env bash
while read -d '' adir2
do
echo "[$adir2]"
dircount=$(ls -1A "$adir2" | wc -l)
if [ "$dircount" -eq 0 ]; then
echo "[$adir2] is empty"
fi
done < <(find . -type d -print0)

尽量避免使用所有大写的变量。

相关内容

  • 没有找到相关文章

最新更新