【发布时间】:2019-03-31 19:53:10
【问题描述】:
我有一个 public 文件夹,在其根文件夹和子文件夹中包含 .html 和非 .html 文件。我需要将所有非 .html 文件移动到 public 文件夹的子文件夹中,例如到public/assets,保留他们的完整路径。
到目前为止,我得到了这样的东西:
mkdir -p public/assets
find public -type f -not -name "*.html" -print0 | xargs -0I{} mv {} public/assets/
它不能正常工作,因为它不会移动具有完整路径的文件,例如如果有文件public/foo/bar.js,它将被移动到public/assets/bar.js,而不是public/assets/foo/bar.js。
我也尝试了另一个版本:
mkdir -p public/assets
find public -type f -not -name "*.html" | sed 's#\(public\)\(.*\)#\1\2 public/assets\2#' | xargs -I% mv %
但它抱怨mv 命令的语法不正确。我只给它传递了一个参数,但是在运行sed 之后,它由2 个路径组成,用一个空格分隔,所以我希望它会将它视为2 个参数。
如果有办法在移动所有文件后删除空文件夹,那就太好了,但这不是必需的。
【问题讨论】: