我在许多文件夹下有许多大的csv文件,并且文件和文件夹的名称中都有空格。使用名称中的空格处理文件
我现在有下面的代码,但是当文件/文件夹的名称中空格它不工作:
csv=$(find . -name "*.csv")
for f in $csv; do
echo "Compressing $f"
(cd $(dirname $f) && zip -j $(basename $f.zip) $(basename $f))
done
我在许多文件夹下有许多大的csv文件,并且文件和文件夹的名称中都有空格。使用名称中的空格处理文件
我现在有下面的代码,但是当文件/文件夹的名称中空格它不工作:
csv=$(find . -name "*.csv")
for f in $csv; do
echo "Compressing $f"
(cd $(dirname $f) && zip -j $(basename $f.zip) $(basename $f))
done
有find
执行拉链本身,因为它仍然知道所有的空间:
find -name '*.csv' -exec zip -j {}.zip {} \;
您写的内容的直接端口将使用-execdir
代替-exec
,但似乎没有必要。
还有一个问题。有没有办法执行touch csvfile zipfile,然后用一个命令删除csv文件?我试过find -name'* .csv'-exec(zip -j {} .zip {} && touch {} {} .zip)\;但没有为我工作。 –
'find'不使用shell ...使用多个'-exec'行,'-a'是隐含的。删除阶段也存在'-delete'。 – o11c
好的谢谢你的帮助。我会尝试你的方法。 –
为什么使用zip而不是'gzip'? – o11c
一般来说,您想使用'find -exec'来避免空间问题。 – o11c
嗨o11c,因为这是一个文件服务器,windows用户需要访问没有安装软件的文件。 –