0

我需要一种循环遍历大目录(/home/data/playerdata/)中的子目录的方法,以便获取特定文件,同时保留我要获取的特定文件的父文件夹名称。

我基本上需要这个来从备份中恢复一个特定的文件。

例子:

要循环的主目录=/home/minecraft/survival1/plugins/Survival/playerdata/

我要恢复的特定文件的路径 =/home/minecraft/survival1/plugins/Survival/playerdata/004fc15d-294c-4a42-a1af-1206c148e39b/economy.yml

在循环中执行脚本的示例命令 =cp /home/minecraft/survival1/plugins/Survival/playerdata/004fc15d-294c-4a42-a1af-1206c148e39b/economy.yml /restored/playerdata/004fc15d-294c-4a42-a1af-1206c148e39b/economy.yml

我需要一个脚本,它将遍历“playerdata”目录中的每个文件夹(UUID 位)并复制该特定文件,同时保留其 UUID 父文件夹。

这是我迄今为止尝试过的:

 for FILE in $BASEDIR
        cp $BASEDIR/FILE/economy.yml /home/restored/FILE/economy.yml

这是在 Debian 服务器上运行的

4

1 回答 1

1

我建议为此使用 find :

cd /home/minecraft/survival1/plugins/Survival/playerdata/
find -name "economy.yml" -exec cp --parents {} /home/minecraft/restore/ \; 

--parents在制作副本时保存目录结构。

或使用 for 循环,就像您尝试过的那样:

find . -type f -print0 | while IFS= read -r -d '' filename;
do 
  mkdir --parents "$RESTOREDIR/$player"
  cp "$BASEDIR/$player/economy.yml" "$RESTOREDIR/$player/economy.yml"
done
于 2019-03-18T13:44:30.353 回答