目录名称带有空格 - 递归文件检查

目录名称带有空格 - 递归文件检查

为了检查音频文件的播放长度,我使用以下脚本:

#!/bin/bash
for dir in $(find . -type d); do
cd $dir

for file in *.ogg *.wav *.mp3
do
  duration=$(ffprobe "$file" 2>&1 | awk '/Duration/ { print $2 }')
  echo -e "$duration\t$file"
done | sort -n

cd - > /dev/null
done

当递归读取的目录名称中不包含空格时,这种方法可以正常工作。

当目录名中有空格时,$dir 变量中的第一部分和第二部分将被分开,因此......

  • 目录 1

变成

  • 目录

  • 1

不幸的是我缺乏脚本知识,所以如果有人能给我指出正确的方向,以便将完整的目录名称传递到变量中,我将不胜感激。

非常感谢,

詹姆士。

答案1

代替

for dir in $(find . -type d); do
cd $dir

使用

find . -type d -print0 | while read -r -d $'\0' dir; do
cd "$dir"

相关内容