gpt4 book ai didi

目录名称中的 bash 空格使用 find 导致 ls 中的换行符

转载 作者:行者123 更新时间:2023-12-04 18:55:48 25 4
gpt4 key购买 nike

我无法处理文件名中的空格
剧本:
使用 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)
尽量避免使用全大写的变量。

关于目录名称中的 bash 空格使用 find 导致 ls 中的换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67036514/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com