我想复制一些文件并将其父目录包含在该过程中。
当前的结构类似于:
/Module1/A/downloads/m13312/file.pdf
/Module1/A/downloads/m17312/file.pdf
/Module1/B/downloads/m18312/file.pdf
/Module2/A/downloads/m19312/file.pdf
我想抓住路径的最后两部分,以便最终得到:
/mydir/m13312/file.pdf
/mydir/m17312/file.pdf
/mydir/m18312/file.pdf
/mydir/m19312/file.pdf
我尝试使用cut
并awk
获得正确的结果,但我似乎无法获得正确返回的路径。这是一个只是回应我需要的示例(我还没有到达复制部分):
find . -type 'f' -path '*downloads*' -print0 | xargs -0 -I {} echo `cut -d/ -f4-5 <<<{}`
这只是打印出整个路径,所以我知道我还不能使用它。
答案1
如果您pax
支持该-0
选项:
find . -type 'f' -path '*downloads*' -print0 |
pax -rw0s'|.*downloads/||' /mydir
答案2
这应该可以做到:
for file in /Module*/*/downloads/m13312/file.pdf
do
file_directory="/mydir/$(basename "$(dirname "$file")")"
mkdir -p "$file_directory"
cp "$file" "$file_directory"
done