比较来自 2 个不同目录的相同类型的文件:bashrc 函数
Compare same type of files from 2 diferent directories : zshrc function
我很久以前发布了一个关于如何比较相同类型(扩展名)文件的问题
来自 2 个不同的目录:
在 bash
shell 下,一切正常,但现在,我在 zsh
shell 下,下面的功能不再工作了:
function diffm() {for file in ""/; do diff -q "$file" ""/"${file##*/}"; done ;}
我收到以下错误:
$ diffm dir1 *.f90 dir2
diff: camb.f90/bessels.f90: Not a directory
camb.f90
和bessels.f90
在同一个目录下,很奇怪的错误。
我想这样使用它(比如在 bash
shell 下):
$ diffm . *.f90 ../../dir2
如果有人能看到解决此问题的解决方法...
更新: 这里是此函数 bash shell
的工作版本:
function diffm() {
# First dir
dir1=""
# Second dir
dir2="${@: -1}"
# Add slash if needed
[[ "$dir1" != */ ]] && dir1=$dir1"/"
[[ "$dir2" != */ ]] && dir2=$dir2"/"
# Wildcard filenames
files=( "$dir1"${@:2:$#-2} )
# Compare the files
for file in "${files[@]}"
do
diff -q "$file" "$dir2""${file##*/}"
done;
}
我正在寻找 zsh shell
的等效项:知道吗?
你应该重组参数的顺序:
function diffm() {
local dir2="" dir1=""; shift 2
for file; do
diff -q "$dir1/$file" "$dir2/$file"
done
}
diffm ../../dir2 . *.f90
zsh 版本:
#!/usr/bin/env zsh
function diffm() {
setopt nullglob
local dir1="" files="" dir2="" file1 file2
for file1 in "$dir1"/${~files}; do
file2="${file1##*/}"
diff -q "$file1" "$dir2/$file2"
done
}
diffm dir1 "*.f90" dir2
我很久以前发布了一个关于如何比较相同类型(扩展名)文件的问题 来自 2 个不同的目录:
在 bash
shell 下,一切正常,但现在,我在 zsh
shell 下,下面的功能不再工作了:
function diffm() {for file in ""/; do diff -q "$file" ""/"${file##*/}"; done ;}
我收到以下错误:
$ diffm dir1 *.f90 dir2
diff: camb.f90/bessels.f90: Not a directory
camb.f90
和bessels.f90
在同一个目录下,很奇怪的错误。
我想这样使用它(比如在 bash
shell 下):
$ diffm . *.f90 ../../dir2
如果有人能看到解决此问题的解决方法...
更新: 这里是此函数 bash shell
的工作版本:
function diffm() {
# First dir
dir1=""
# Second dir
dir2="${@: -1}"
# Add slash if needed
[[ "$dir1" != */ ]] && dir1=$dir1"/"
[[ "$dir2" != */ ]] && dir2=$dir2"/"
# Wildcard filenames
files=( "$dir1"${@:2:$#-2} )
# Compare the files
for file in "${files[@]}"
do
diff -q "$file" "$dir2""${file##*/}"
done;
}
我正在寻找 zsh shell
的等效项:知道吗?
你应该重组参数的顺序:
function diffm() {
local dir2="" dir1=""; shift 2
for file; do
diff -q "$dir1/$file" "$dir2/$file"
done
}
diffm ../../dir2 . *.f90
zsh 版本:
#!/usr/bin/env zsh
function diffm() {
setopt nullglob
local dir1="" files="" dir2="" file1 file2
for file1 in "$dir1"/${~files}; do
file2="${file1##*/}"
diff -q "$file1" "$dir2/$file2"
done
}
diffm dir1 "*.f90" dir2