ham*_*mid 26 bash shell prefix
如何在Bash中删除文件名前缀,如以下示例所示:
XY TD-11212239.pdf
Run Code Online (Sandbox Code Playgroud)
要得到
11212239.pdf
Run Code Online (Sandbox Code Playgroud)
即,删除XY TD-?
Sha*_*baz 29
您提供的信息很少,但假设您在bash中执行此操作,并且有一个需要删除其前缀的文件列表,您可以通过sed以下方式管道列表:
例如:
./generate_your_list_of_files | sed -e 's/^prefix//'
Run Code Online (Sandbox Code Playgroud)
或者如果您的文件列表是空格分隔的:
echo TD-file1 TD-file2.x.yt TD-file3-beep | sed -e 's/\<TD-//g'
Run Code Online (Sandbox Code Playgroud)
第一个匹配行的开头的前缀并删除它.第二个匹配TD-(或任何其他您想要替换的前缀)仅在它出现在单词的开头并在所有行的所有匹配中替换它时.这可能会变得危险,例如像TD-file\ that\ TD-contains\ space.txt变成的文件file\ that\ contains\ space.txt
作为旁注,请不要使用您的文件列表ls.那是一个可怕的错误.如果您需要获取要使用的文件列表并在多个地方引用,我建议将它们放在一个数组中:
files=(*)
Run Code Online (Sandbox Code Playgroud)
然后使用此数组.
由于受欢迎的请求(下面的单个评论),这里是如何重命名目录中的所有文件,以便XY TD-删除前缀(感谢@tripleee):
for file in prefix*;
do
mv "$file" "${file#XY TD-}"
done
Run Code Online (Sandbox Code Playgroud)
Dav*_* W. 28
你说POSIX shell包括BASH,Kornshell,Ash,Zsh和Dash.幸运的是,所有这些shell都对变量值进行模式过滤.
模式是您*在Unix/Linux命令行中指定文件时使用的模式:
$ ls *.sh # Lists all files with a `.sh` suffix
Run Code Online (Sandbox Code Playgroud)
这些POSIX shell使用四种不同的模式过滤:
${var#pattern} - 从左侧移除与图案匹配的最小字符串.${var##pattern} - 从左侧移除与图案匹配的最大字符串.${var%pattern} - 从右侧移除与图案匹配的最小字符串.${var%%pattern} - 从右侧移除与图案匹配的最大字符串.这里有一些例子:
foo="foo-bar-foobar"
echo ${foo#*-} # echoes 'bar-foobar' (Removes 'foo-' because that matches '*-')
echo ${foo##*-} # echoes 'foobar' (Removes 'foo-bar-')
echo ${foo%-*} # echoes 'foo-bar'
echo ${foo%%-*} # echoes 'foo'
Run Code Online (Sandbox Code Playgroud)
你没有真正解释你想要什么,而且你没有包含任何代码示例,因此很难想出能够做你想做的事情.但是,使用模式过滤,您可以准确地确定要对文件名执行的操作.
file_name="XY TD-11212239.pdf"
mv "$file_name" "${file_name#*-}" # Removes everything from up to the first dash
Run Code Online (Sandbox Code Playgroud)
您也可以使用重命名工具
用自制软件安装
brew install rename
然后从目录中运行以下命令,从所有文件中删除“ prefix-”
rename -d prefix- *
除了其他答案中显示的子字符串提取之外,您还可以使用子字符串替换。鉴于文件:
fn="XY TD-11212239.pdf"
Run Code Online (Sandbox Code Playgroud)
然后子串替换:
fn_new=${fn//*TD-/}
Run Code Online (Sandbox Code Playgroud)
也会做你想做的。
| 归档时间: |
|
| 查看次数: |
28556 次 |
| 最近记录: |