我试图用一个圆点,在开始处,并与漏点的空间在年底前(这样命名变更的jpg文件. Startjpg
到Start.jpg
点使文件隐藏起来,sed
并ls -al
列出了这些文件,因此我正在将文件ls -al
发送到sed
。我已经在线阅读了许多手册,并且总是遇到此错误
sed: -e expression #1, char 6: unknown command: `/'
我试过了
ls -al | sed -r '/^\./*.*/g'
ls -al | sed -r '/^\.//g'
ls -al | sed -r '/.*/[\.]g'
ls -al | sed 's/^\./\\1*./g'
还有更多甚至更多。
我也需要将filejpg更改为file.jpg
使用Perlrename
工具(rename
在Debian和包括Ubuntu在内的朋友中被调用,它可能在prename
其他地方):
rename -n 's/(?<!\.)jpg$/.jpg/' * # -n makes it show you what it'll do,
# but not actually do it. Remove the -n to
# actually rename
打破这种模式:jpg$
意思是“以'jpg'结尾”。该(?<!\.)
手段“有没有那么前点‘JPG’”阻止你改变foo.jpg
成foo..jpg
,这将是愚蠢的。
的*
是正常壳通配符; rename
列出文件列表以考虑重命名。您当然可以这样做/path/to/dir/*
,传递文件名列表,与find
等等结合使用。
从一开始就删除点和空格也很容易:
rename -n 's/^[. ]+//' * # trying -n first is good practice
这将删除开头的所有点和空格。它将. . . foo
变成foo
。
通常,*
shell扩展不会产生名称以点开头的文件(隐藏文件)。一种选择是使用.*
;这还将产生两个特殊条目.
(当前目录)和..
(父目录)。在这种情况下,这应该是无害的;第一个命令将忽略它们(它们不以结尾jpg
);第二个命令将尝试重命名它们,但这只会产生一个错误。另一种选择是:
find -type f -exec rename -n 's/^[. ]+//' '{}' +
-type f
将仅限于文件。当然,您也可以使用find的其他任何选项。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句