- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我写了一个 shell 脚本来把我这边的很多 JPG 转换成 pdf
#!/bin/bash
set -xv
for i in `ls -v *.JPG`;
do i=$(basename "$i")
convert "$i" "$i.pdf" ;
done
JPG 是
DSCN2612.JPG DSCN2618.JPG DSCN2624.JPG
我得到的转换后的 pdf 有名字
DSCN2612.JPG.pdf DSCN2618.JPG.pdf DSCN2624.JPG.pdf
现在请注意在我的 shell 脚本中使用了 basename 命令,我希望生成的 pdf 名称是
DSCN2612.pdf DSCN2618.pdf DSCN2624.pdf
输出哪里不一样。我正在使用 Ubuntu 12.04 和 basename --version 显示
basename (GNU coreutils) 8.13 Copyright (C) 2011 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later http://gnu.org/licenses/gpl.html. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.
在终端上输入
basename DSCN2612.JPG
I get the outputDSCN2612.JPG
如我所料
DSCN2612
只是我的理解有误,或者我使用此脚本的方式存在一些错误。
最佳答案
basename
命令有两个用途,剥离路径前缀和(可选)剥离后缀。
要去除路径前缀,您可以简单地传递一个路径,例如
basename /path/to/file.ext
# file.ext
要另外去掉一个后缀,你需要告诉basename
你想去掉的后缀,例如
basename /path/to/file.ext .ext
# file
basename DSCN2612.JPG .JPG
# DSCN2612
因此,basename
不会“自动检测”后缀,因为在 unix 中,文件不一定有后缀。换句话说,句点后的字母不一定是后缀,因此您需要明确告诉它要去除的后缀。
但是,对于“自动检测”和剥离,有一些特定于 bash 的替代方法。例如,
x="file.ext"
echo ${x%.*}
# file
在不知道更多的情况下,我可能会把你的脚本写成
for jpg in *.JPG; do
base=${jpg%.*}
convert "$jpg" "$base.pdf"
done
关于bash - basename 命令未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15612255/
出于某种原因,我的代码正在做这种奇怪的事情,其中 fileparse 只打印(字面意思)File::Basename use strict; use warnings 'all'; use
>>> os.path.basename("../dir/") '' $ basename ../dir/ dir documentation os.path.basename(path) Retur
我确定我遗漏了什么,但我无法弄清楚。鉴于: $ find -type f ./hello.txt ./wow.txt ./yay.txt 为什么接下来的两个命令呈现不同的结果? $ find -typ
非常感谢您的帮助。 标题说明一切:使用有什么区别: echo `basename $HOME` 和 echo $(basename $HOME) 请注意,我知道 basename 命令的作用,两种语法
我有一个文件数组,我试图仅获取文件的基本名称,而不包含长扩展名。下面是数组的示例: [ '/public/uploads/contentitems/.DS_Store', '/public/u
我正在编写一个需要接收文件名的 bash 脚本,它可能类似于: “文件名 - Copy.txt” 当我尝试获取此文件的文件名时,basename 似乎将破折号作为操作数拾取并失败。 basename:
FOLDERS=$( basename "$(find "${LOG_DIR}" ! -path "${LOG_DIR}" -type d )") /storage/archive/fakeagent
我写了一个 shell 脚本来把我这边的很多 JPG 转换成 pdf #!/bin/bash set -xv for i in `ls -v *.JPG`; do i=$(basename "$i
给定以下命令: $(basename "/this-directory-does-not-exist/*.txt" ".txt") 它不仅输出 txt 文件,还输出其他文件。另一方面,如果
我需要一个作为 bash 脚本参数的文件的基本名称。基本名称应该去掉其文件扩展名。假设 $1 = "/somefolder/andanotherfolder/myfile.txt",所需的输出将是 "
我们有: $path = "/home/httpd/html/index.php"; $file = basename($path); // $file is set to "inde
我有一个奇怪的错误,在下面的代码中,basename() 已完成删除 $file: $files = glob(DIR_APPLICATION . 'controller/module/*.php')
我有一个奇怪的错误,在下面的代码中,basename() 已完成删除 $file: $files = glob(DIR_APPLICATION . 'controller/module/*.php')
我在一个 Windows 盒子上,我正在使用 basename 从一些目录中提取文件名。显然,文件名的大小是有限制的,否则 basename 会抛出一个错误(之前我在 linux 上,我不记得有什么问
编写脚本来优化我的网络图片。名称中包含空格的文件名和目录有问题。 这是我所拥有的: read -p "Enter full path from root (/) to your site... exa
这是我的片段: __VERSION="0.0.1" __COMMAND="${basename}" __USAGE="$__COMMAND -abc args" if [ $# == 0 ] ; th
#!/bin/bash file=debian.deb test=basename $file .deb DP="blah/blah/$test/$test.php" read -p "[$DP]:
在 bash Linux 中 v1=$(basename $0) gives filename.ext v1=${v1%.*}.log replaces e
运行 os.path.basename(__file__) 有时给我的文件名是 foo.py,但有时它会给出 foo.pyc。我知道pyc是编译后的文件,编译后可能每次都使用它。我只是对为什么 bas
这是一个简单的例子来说明这个问题: print basename('léquipe.jpg'); // léquipe.jpg print basename('équipe.jpg'); // qu
我是一名优秀的程序员,十分优秀!