我正在尝试比较具有相同名称和相同内容的2个文件,但我只想保留其中一个。 可以说我有以下
/root/dir1/file1.doc
/root/dir1/file1.pdf
我只想保留.doc文件,这是最好的方法吗?
答案 0 :(得分:1)
从dash
联机帮助页(我相信所有bash
,ksh
和zsh
"继承"这些功能):
$ {parameter%word}删除最小的后缀模式。这个词是 扩大到产生一种模式。然后产生参数扩展 在参数中,后缀的最小部分与。匹配 图案 删除。
$ {parameter %% word}删除最大的后缀模式。这个词被扩展为产生一种模式。然后产生参数扩展 in参数,后缀的最大部分匹配 图案 删除。
$ {parameter#word}删除最小的前缀模式。这个词被扩展为产生一种模式。然后参数扩展 得到参数,前缀的最小部分匹配 按模式 删除。
$ {parameter ## word}删除最大的前缀模式。这个词被扩展为产生一种模式。然后产生参数扩展 in参数,前缀的最大部分匹配 图案
在实践中:
shortSuff(){ printf '%s\n' "${1#*.}"; }
#^applies the string op to the $1 positional parameter
#`printf '%s\n'` is like `echo` but doesn't break on e.g., hyphen-prefix arguments
file=/root/dir1/file1.doc
[ shortSuff "$file" = doc ] && echo "Yes, the short suffix is doc"
答案 1 :(得分:0)
您可以编写一个简短的脚本来为您执行此操作:
#!/bin/bash
EXT="${1}"
if -z "${EXT}"; then EXT=".doc"; fi
TD="$(mktemp -d)"
mv ./*"${EXT}" "${TD}"
rm ./*
mv "${TD}"/* .
rmdir "${TD}"
假设您的脚本名为keep_copy.sh
,您可以按以下方式调用它:keep_copy.sh .doc
。