我是 Linux 新手,我想在 bash 中构建一个脚本来检查文件夹中打开了哪些文件并将其他文件(未打开的文件)移动到另一个文件夹。
答案1
想不出一个完全优雅的方法来做到这一点。我希望这find
能有一些便利。那会让事情变得简单。但我没有找到一个选项来识别文件是否打开,所以我开始编写一个小脚本来理解逻辑。
#!/bin/sh
DIR=/some/files
NEW_DIR=/some/new/files
OPEN_FILES=$(lsof -Fn $DIR/* | grep ^n | cut -c2- | sort -u)
for file in $DIR/*; do
if echo "$OPEN_FILES" | grep -q $file; then
echo "$file is opened - not moving"
continue
fi
mv $file $NEW_DIR/
echo "$file moved"
done
说实话,这有点恶心,但希望这是你想要的基础,你可以根据需要进行修改。如果有人知道如何使用find
,请加入讨论。对于这样的事情,find
使用-exec mv
选项确实很好。