我正在创建一个shell脚本来查找和删除保存在桌面上的屏幕截图。我正在尝试使用mapfile
来创建一个文件路径数组。
然而,我很难管理它,因为我当前的代码创建了一个只有一个元素的数组!
值得一提的是,注释掉的代码成功地创建了我想要的数组(如果我假装单词分裂没有发生(。我知道这并不理想,因为它将输出拆分为单独的数组元素,但至少它创建了一个包含多个元素的数组!
有人能告诉我正确的方向吗?因为我一直在寻找如何使用mapfile
的例子,但还没有成功:(
代码:
declare -a files
mapfile -d '' files < <(find "$HOME/Desktop" -maxdepth 1 -type f -name "*.png")
# files=($(find "$HOME/Desktop" -maxdepth 1 -type f -name *.png))
echo "${#files[@]}"
当前代码屏幕截图
感谢@jordanm发现我的错误。
我需要添加-print0
操作来打印完整的文件名,后面跟着一个null字符,因为它默认为print
。
这是没有不必要的declare
:的修正版本
mapfile -d '' files < <(find "$HOME/Desktop" -maxdepth 1 -type f -name "*.png" -print0)