相当于 "cp --parents" 只达到一定深度
Equivalent of "cp --parents" to a certain depth only
这是我的问题:
我有一个名为 archive
的文件夹,其中包含以下格式的许多子目录和文件:
/home/user/archive/$YYYY/$MM/$DD
我想将一些特定文件复制到 /tmp
,同时保留部分目录树。
到目前为止,我想出了
find /home/user/archive -mtime +1 -type f -exec cp --parents {} /tmp;
(find ... -mtime +1 -type f
部分实际上 returns 我想复制的内容)
但是,输出格式为 /tmp/home/user/archive/$YYYY/$MM/$DD
而我想要的输出格式是 /tmp/archive/$YYYY/$MM/$DD
有什么解决办法吗? :)
一个选项是 运行 在解析 find 的输出后通过 awk 的系统函数进行复制。这样的解决方案要求 directory/subdirectory 结构在所有情况下都相同:
find /home/user/archive -mtime +1 -type f | awk -F\/ '{ print "mkdir -p /tmp/""/""/"";cp --parents "[=10=] " /tmp/""/""/""/" }'
这将打印您需要为从查找命令找到的每个条目执行的复制命令。确保命令按预期打印(这一步很重要)
一旦您确认命令按预期显示,您可以 运行 通过 awk 的系统函数实际复制命令:
find /home/user/archive -mtime +1 -type f | awk -F\/ '{ system("mkdir -p /tmp/""/""/"";cp --parents "[=11=] " /tmp/""/""/""/") }'
这是我的问题:
我有一个名为 archive
的文件夹,其中包含以下格式的许多子目录和文件:
/home/user/archive/$YYYY/$MM/$DD
我想将一些特定文件复制到 /tmp
,同时保留部分目录树。
到目前为止,我想出了
find /home/user/archive -mtime +1 -type f -exec cp --parents {} /tmp;
(find ... -mtime +1 -type f
部分实际上 returns 我想复制的内容)
但是,输出格式为 /tmp/home/user/archive/$YYYY/$MM/$DD
而我想要的输出格式是 /tmp/archive/$YYYY/$MM/$DD
有什么解决办法吗? :)
一个选项是 运行 在解析 find 的输出后通过 awk 的系统函数进行复制。这样的解决方案要求 directory/subdirectory 结构在所有情况下都相同:
find /home/user/archive -mtime +1 -type f | awk -F\/ '{ print "mkdir -p /tmp/""/""/"";cp --parents "[=10=] " /tmp/""/""/""/" }'
这将打印您需要为从查找命令找到的每个条目执行的复制命令。确保命令按预期打印(这一步很重要)
一旦您确认命令按预期显示,您可以 运行 通过 awk 的系统函数实际复制命令:
find /home/user/archive -mtime +1 -type f | awk -F\/ '{ system("mkdir -p /tmp/""/""/"";cp --parents "[=11=] " /tmp/""/""/""/") }'