如何将未打开的文件移动到另一个文件夹

如何将未打开的文件移动到另一个文件夹

我是 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选项确实很好。

相关内容