Chinaunix

标题: 目录下的文件名含中文及空格,如何把目录下所有的文件名赋值给数组变量? [打印本页]

作者: s1978256    时间: 2023-12-02 21:26
标题: 目录下的文件名含中文及空格,如何把目录下所有的文件名赋值给数组变量?
linux一个目录下的文件名包含有中文及空格等特殊字符,如何用一个数组变量存储目录下所有的文件名?使用array=$(ls *),会把有空格的文件名,以空格分割为两个文件名.


作者: 本友会机友会摄友会    时间: 2023-12-26 08:58
提示: 作者被禁止或删除 内容自动屏蔽
作者: Shell_HAT    时间: 2024-02-04 11:05
回复 1# s1978256


# 方法1
  1. readarray -t array1 < <(ls -1)
  2. echo ${array1[0]}
复制代码


# 方法2
  1. mapfile -t array2 < <(ls -1)
  2. echo ${array2[0]}
复制代码


# 方法3
  1. for file in *; do
  2.     array3+=("$file")
  3. done
  4. echo ${array3[0]}
复制代码

作者: BangBull    时间: 2024-03-06 11:41
  漂亮
作者: aqbssh    时间: 2024-11-17 19:08
本帖最后由 aqbssh 于 2024-11-17 19:49 编辑

回复 3# Shell_HAT

为什么我的ls命令 把有空格的文件名自动加上了 单引号 ?

解决了,把 ls -1 的结果重定向到文件里就没有加 引号了。
大佬们的代码就是漂逸,,我以前都是 用find 查找 然后 用 read -r 选项 读取,每一行一个文件名 再处理。
  find /home/a/tmp/ -type f 2>/dev/null | while read -r

截图_2024-11-17_19-13-16.png (91.87 KB, 下载次数: 5)

截图_2024-11-17_19-13-16.png





欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2