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
您可以尝试在目录周围用空格引用双引号吗