我有所谓的“图像”我的桌面上的文件夹,该文件夹内有3张图片...如何在Mac OSX重命名使用岩组外壳和`sed`命令文件
File-A-B.gif
File-C-D.gif
File-E-F.gif
...我想要重命名命令行中的文件,以便删除第二个连字符/短划线。因此,其结果将是文件命名,像这样......
File-AB.gif
File-CD.gif
File-EF.gif
...我用命令的组合,通过管道输送到对方,但在让他们的工作没有多少运气。
起初我ls File-* | sed 's/\(File-[^-]\)-\(.+\)/mv & \1\2/' | sh
此命令的击穿是...
- 名单的是开始
File-
- 管的结果通过对
sed
- 我们”的任何文件将使用
sed
捕捉名 - 不同地区看第一个文件,我们会捕捉到
File-A
和B.gif
- 与
sed
我们再一招命令替换匹配的文件名,并有效地告诉它的原始文件重命名为弥补数据的两件的文件,我们已经捕获 - 我们就通过管道该命令通过到
sh
我得到的初始错误是一个权限错误。我不确定为什么我有'读写'权限访问这些文件。
若要解决此我chmod 777
每个文件。
这就产生了一个新的错误这是cannot execute binary file
。
要解决这个错误我看到这个帖子:http://blog.mpdaugherty.com/2010/05/27/difference-with-sed-in-place-editing-on-mac-os-x-vs-linux/这表明增加一对额外的单引号。这部作品的原因(显然)是因为sed
将错误,因为它不知道是干什么用的文件扩展名,而是把一个空字符串中和的错误(在一个侧面说明:我的理解是,你还需要使用-i
标志 - 我没有使用 - 但这样做导致了一个不同的错误,所以我废除了,只是用单引号来避免我得到的二进制文件错误)。
所以现在我有ls File-* | sed '' 's/\(File-[^-]\)-\(.+\)/mv & \1\2/' | sh
但随着No such file or directory
这样的错误?
我想是明确与文件的位置,因此,例如...
ls File-* | sed '' 's/\(File-[^-]\)-\(.+\)/mv ~\/Desktop\/Images\/& ~/Desktop\/Images\/\1\2/' | sh
...通知我不得不逃离斜线~\/Desktop\/Images\/
但是这仍然没有工作。
我也安装使用自制的sed
GNU版本,但它也有gsed: can't read s/\(Vim-[^-]\)-\(.+\)/mv & \1\2/: No such file or directory
差错以类似的方式我有点茫然与我怎么能得到这个工作。
我不想诉诸写一个bash/zsh脚本或Ruby脚本。
任何帮助,你可以给我将不胜感激。
谢谢!看起来你提到的第一个选项适用于我,但它确实在输出中产生了一个错误(即使它正确地重命名了这些文件)? 错误是'preexec:4:command not found:^ A^B'你知道这意味着什么吗?注意,你说的最后一个例子是我几乎有的,没有奏效。 但我明白为什么第一个版本能够工作(我认为),我们使用'echo'和'$()'组合插入其他命令。我不是100%确定'$()'通常用于什么? 你能否给你的答案增加额外的解释来帮助我(和其他人)更好地理解:) – Integralist
'$()'是过程替换。我想因为我们不管怎样管道到'sh',这不是必需的。见上面的编辑。 – devnull
这很有道理。谢谢! – Integralist