我正在使用
ls | cut -c 5-
这将以我想要的格式返回文件名列表,但实际上并没有执行操作。请给予建议。
rename -n 's/.{5}(.*)/$1/' *
-n
是用于模拟的,去掉它可以得到实际结果。
brew
https://brew.sh/,然后运行 brew install rename
来使用此功能。 - spexlinux-util
版本的rename
而不是perl脚本。对于任何arch用户,你需要安装官方的perl-rename
软件包。 - Ibraheem Ahmed当您在希望进行重命名的文件夹中时,可以使用以下命令:
rename -n -v 's/^(.{5})//' *
-n
是指没有实际操作,-v
用于显示即将进行的更改。如果您对结果满意,可以将两者都移除。
rename 's/^(.{5})//' *
这样的代码应该能够工作:
for x in *; do
echo mv $x `echo $x | cut -c 5-`
done
echo
。echo
并按原样编写,那么只有当目录中仅包含名称不带空格且至少为6个字符长的文件时,才能正常工作而不出现错误。虽然双引号引用 $x
并使用 $(..)
代替传统的反引号用法可以解决文件名中包含空格的错误,但仅此还不能处理可能抛出的所有错误,例如如果文件名仅为5个字符长或存在目录。 - user3439894for fn in *; do newfn=$(echo $fn | cut -c 19-); echo will move $fn to $newfn; done
- JL_SOKebman的小代码很不错,如果你想在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
这个方法可能对你有用:rename is not recognized as the name of a cmdlet
get-childitem * | rename-item -newname { [string]($_.name).substring(5) }
search_dir=/Users/veller/Desktop/folder; for entry in "$search_dir"/*; do mv "$entry" "${entry:5}"; done
它会给我以下错误提示:没有这个文件或目录。 - Fazwelingtonfor f in *.*
在Kebman的评论中,以避免子文件夹。 - Ferroao