在 tcsh 的嵌套表达式中调用 mv 将不起作用

call mv in nested expression in tcsh won't work

我有一些带有“??????”的目录名字符,无法确定代码集,使用 convmv,所以我尝试执行以下操作

find . -maxdepth 1 -type d > list
edit list with cutting others that ./????... 
mv `cat list` new_dir

但是不行,请问为什么,如何重命名这个目录?

您可以将 -exec 传递给 find,不需要中间 list 文件:

find . -maxdepth 1 -type d -exec mv {} new-name \;

这应该正确传递参数,即使是那些带有空格或其他需要转义的字符。

请注意,这仅在您 "find" 单个文件时有效。

cat list 的输出嵌入到 mv 命令行中,它混淆了 shell。

要修复,输出应该封装在双引号内,这样实现:

mv "`cat list`" new_dir