知道如何移动未被任何进程使用的文件,从而使用 bash 脚本保留对通配符的支持吗?
基本概念是:
for file in $1..$n-1
if ! fuser file
mv file $n
其中 $1..$n-1
是源文件/目录,$n
是目标路径。
编辑:工作脚本
#!/bin/bash
# Move files which are not open by any process
dest=${@:$#} # get last arg
for file in "${@:1:$#-1}"; do # get all but last args
fuser "$file" >/dev/null 2>&1 && continue
mv "$file" "$dest"
done
谢谢大家的帮助!
编辑2 这个脚本有一个错误,某些目录下使用的文件没有被 fuser 检查。稍后会检查这个。
最佳答案
我会将目标目录作为第一个 参数传递。那么你的伪代码就差不多了。
dest=$1
shift
for file; do # shorthand for for file in "$@"; do
fuser "$file" >/dev/null && continue
mv "$file" "$dest"
done
关于linux - 移动未使用的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38175119/