我正在使用
ls | cut -c 5-
这确实以我想要的格式返回文件名列表,但实际上并没有执行该操作。请指教。
答案 0 :(得分:37)
rename -n 's/.{5}(.*)/$1/' *
-n
用于模拟;删除它以获得实际结果。
答案 1 :(得分:19)
当您位于要重命名的文件夹中时,可以使用以下命令:
rename -n -v 's/^(.{5})//' *
-n
不执行任何操作,-v
显示更改内容。如果您对结果感到满意,可以删除它们
rename 's/^(.{5})//' *
答案 2 :(得分:2)
这样的事情应该有效:
for x in *; do
echo mv $x `echo $x | cut -c 5-`
done
请注意,这可能具有破坏性,因此首先以这种方式运行,然后在您确信它符合您的要求后删除前导echo
。
答案 3 :(得分:1)
Kebman 的小代码非常适合如果您想在 7zipping 或 zipping 之前切断当前目录中隐藏文件和文件夹的前导点。
我把它放在一个 bash 脚本中,但我的意思是:
for f in .*; do mv -v "$f" "${f:1}"; done # cut off the leading point of hidden files and dirs
7z a -pPASSWORD -mx=0 -mhe -t7z ${DESTINATION}.7z ${SOURCE} -x!7z_Compress_not_this_script_itself_*.sh # compress all files and dirs of current dir to one 7z-file, excluding the script itself.
zip 和 7z 可能会在当前目录的顶层隐藏文件时遇到问题。 接受子目录中的隐藏文件。
mydir/myfile = ok
mydir/.myfile = ok
.mydir/myfile = nok
.mydir/.myfile = nok
答案 4 :(得分:0)
如果您看到一条错误消息,
重命名不能识别为cmdlet的名称
这可能对您有用,
get-childitem * | rename-item -newname { [string]($_.name).substring(5) }