2017-09-11 52 views
1

我在许多文件夹下有许多大的csv文件,并且文件和文件夹的名称中都有空格。使用名称中的空格处理文件

我现在有下面的代码,但是当文件/文件夹的名称中空格它不工作:

csv=$(find . -name "*.csv") 

for f in $csv; do 
    echo "Compressing $f" 
    (cd $(dirname $f) && zip -j $(basename $f.zip) $(basename $f)) 
done 
+0

为什么使用zip而不是'gzip'? – o11c

+1

一般来说,您想使用'find -exec'来避免空间问题。 – o11c

+0

嗨o11c,因为这是一个文件服务器,windows用户需要访问没有安装软件的文件。 –

回答

1

find执行拉链本身,因为它仍然知道所有的空间:

find -name '*.csv' -exec zip -j {}.zip {} \; 

您写的内容的直接端口将使用-execdir代替-exec,但似乎没有必要。

+0

还有一个问题。有没有办法执行touch csvfile zipfile,然后用一个命令删除csv文件?我试过find -name'* .csv'-exec(zip -j {} .zip {} && touch {} {} .zip)\;但没有为我工作。 –

+0

'find'不使用shell ...使用多个'-exec'行,'-a'是隐含的。删除阶段也存在'-delete'。 – o11c

+0

好的谢谢你的帮助。我会尝试你的方法。 –

相关问题