Linux 当目录名有空格且目录有特定的文件扩展名时,如何循环遍历目录并将其移动到另一个位置

Linux 当目录名有空格且目录有特定的文件扩展名时,如何循环遍历目录并将其移动到另一个位置,linux,unix,Linux,Unix,我有一个包含以下目录的文件夹 $ pwd /d/xxx 'Anupam Roy - Zulfiqar (Original Motion Picture Soundtrack)'/ 'Zulm Ka Jawab [1995] [Soundtrack]{Original Release Melody Top Star MCD No. 406 CD}'/ 第一个目录有一个扩展名为.flac的文件列表 第二个目录有一个名为 'Bappi Lahiri - Zulm Ka Jawab (1995

我有一个包含以下目录的文件夹

$ pwd
/d/xxx
'Anupam Roy - Zulfiqar (Original Motion Picture Soundtrack)'/
'Zulm Ka Jawab [1995] [Soundtrack]{Original Release  Melody  Top Star  MCD No. 406  CD}'/
第一个目录有一个扩展名为.flac的文件列表 第二个目录有一个名为

'Bappi Lahiri - Zulm Ka Jawab (1995) [FLAC] {Melody MCD-406}'/
我的要求是循环遍历/d/xxx中的所有目录,并将它们移动到另一个位置。如果目录中有flac文件,我想跳过该目录

在这种情况下,我想移动“Bappi Lahiri-Zulm Ka Jawab(1995)[FLAC]{Melody MCD-406}/”并跳过“Anupam Roy-Zulfiqar(原始电影配乐)”/

我已经编写了一个脚本,但由于目录名有空格,所以无法运行

#!/bin/bash
for d in D:/xxx/*/; do
    count=`ls -l *.flac 2>/dev/null | wc -l`
    if [ -d "$d" ] && [ $count == 0 ]; then
        mv $d D:/krishna/
        #$echo "$d"
    fi
done

我修改了一点脚本,现在我正在运行来自D:\xxx的脚本

#!/bin/bash
for d in */; do
    echo $d
    cd "$d"
    count=`ls -l *.flac 2>/dev/null | wc -l`
    cd ..
    echo $count
    if [ -d "$d" ] && [ $count == 0 ]; then
        mv $d D:/krishna/
        #$echo "$d"
    fi
done
但这是错误的

$ ./dcdcopy.sh
Anupam Roy - Zulfiqar (Original Motion Picture Soundtrack)/
6
Zulm Ka Jawab [1995] [Soundtrack]{Original Release Melody Top Star MCD No. 406 CD}/
0
mv: cannot stat 'Zulm': No such file or directory
mv: cannot stat 'Ka': No such file or directory
mv: cannot stat 'Jawab': No such file or directory
mv: cannot stat '[1995]': No such file or directory
mv: cannot stat '[Soundtrack]{Original': No such file or directory
mv: cannot stat 'Release': No such file or directory
mv: cannot stat 'Melody': No such file or directory
mv: cannot stat 'Top': No such file or directory
mv: cannot stat 'Star': No such file or directory
mv: cannot stat 'MCD': No such file or directory
mv: cannot stat 'No.': No such file or directory
mv: cannot stat '406': No such file or directory
mv: cannot stat 'CD}/': No such file or directory
开始工作了

#!/bin/bash
for d in */; do
    echo $d
    cd "$d"
    count=`ls -l *.flac 2>/dev/null | wc -l`
    cd ..
    echo $count
    if [ -d "$d" ] && [ $count == 0 ]; then
        mv "$d"/* D:/krishna/
        #$echo "$d"
    fi
done

您可以尝试在目录周围用空格引用双引号吗