查找dir / subdirs中的所有文件并保存到数组中,但也将带空格的文件重命名为下划线

时间:2017-05-15 14:55:39

标签: bash

我能够找到目录及其子目录中的所有文件。我将它保存到一个数组中,但我还需要将名称中包含空格的那些重命名为下划线。

样本结构

./abc 123.txt
./dags/ftp.pyc
./dags/ftp.py
./logs/scheduler/2017-05-12/ftp.py.log

查找文件并插入数组

array=($(find . -type f -print0 | xargs -0))

# Does not work
for i in ${array[@]};do echo ${i// /_};done

#Output
./abc
123.txt
./dags/ftp.pyc
./dags/ftp.py
./logs/scheduler/2017-05-12/ftp.py.log

如果我可以在进入数组之前对该值运行正则表达式,那将更为理想。

1 个答案:

答案 0 :(得分:0)

上述命令的问题在于数组循环遍历文件名,空格为两个变量而不是一个变量。 像下面的东西应该工作

find . -type f -print0 | while IFS= read -r -d '' file; do echo ${file// /_} ; done