我希望将当前目录中的大量文件移到新目录中,同时保留其原始路径(例如example/app1/main.c
应移至/newdir/example/app1/main.c
)。
我通过创建了所有必要的目录。以下内容:
git ls-files --others | awk -F '/' '{print "/home/user/newdir/"$1"/"$2}' | xargs mkdir -p
但我不确定如何强制mv
在确定新位置时使用git ls-files --others
目录路径。
答案 0 :(得分:1)
我通常这样做的一种方法是使用tar,因为它非常擅长保存文件。
tar -c -f - $(git ls-files --other) | tar -x -f - -C /newdir && git clean -df
或类似的东西应该是你想要的。第一个tar在stdout上创建一个tar,由第二个读取;第二个将它提取到目的地。之后,我们需要删除文件,因此git clean。
请注意,如果您有许多文件,则可以将第一个tar拆分为两部分:
git ls-files > /tmp/files && tar -c -f - -T /tmp/files ...