从具有父目录的每个子文件夹中复制特定文件

时间:2019-03-18 13:33:25

标签: linux bash shell debian

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

我基本上需要这样做,以便从备份中还原一个特定文件。

示例:

要循环的主目录= let vc = MyViewController() vc.modalPresentationStyle = .popover if let pop = vc.popoverPresentationController { pop.delegate = self // * } self.present(vc, animated: true)

我要还原的特定文件的路径= /home/minecraft/survival1/plugins/Survival/playerdata/

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

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

这是我到目前为止尝试过的:

cp /home/minecraft/survival1/plugins/Survival/playerdata/004fc15d-294c-4a42-a1af-1206c148e39b/economy.yml /restored/playerdata/004fc15d-294c-4a42-a1af-1206c148e39b/economy.yml

它正在Debian服务器上运行

1 个答案:

答案 0 :(得分: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