2017-10-19 48 views
1

任何想法为什么这个命令不起作用?顺便说一句,我想删除当前目录中的所有CSV文件的扩展名。从文件名找到exec和strip扩展

find -type f -iname "*.csv" -exec mv {} $(basename {} ".csv") \; 

尝试了很多变体,包括参数展开,xargs ......即使这样,所有的都变成徒劳了。

+0

是否有任何提供的答案适合你?如果没有这种感觉,可以将它们标记为已接受并投票,以便它们可以关闭 – Inian

+0

此答案适用于您?请在下面留下反馈意见 – Inian

回答

0

首先,注意你没有子目录;无需额外参数的find将自动重演到以下任何目录中。

简单的方法:如果你有文件足够小的数目,只需要使用水珠(*)运算符,并利用rename优势:

$ rename 's/.csv$//' *.csv 

如果你有太多的文件,请使用find和也许xargs

$ find . -maxdepth 1 -type f -name "*.csv" | xargs rename 's/.csv$//' 

如果你想成为真正安全,告诉findxargs与空字节来界定,因此T帽子你没有奇怪的文件名(例如,用空格或换行符)搞砸了这个过程:

$ find . -maxdepth 1 -type f -name "*.csv" -print0 | xargs -0 rename 's/.csv$//'