我的想法是在路径$ 1中找到所有.tar文件,然后通过xargs创建一个与路径$ dirr中的.tar文件同名的目录,该目录从控制台读取。 现在这个代码在我写当前位置(./)但是对于/ home / user等路径时有效。它不会 知道如何使这个代码工作吗?
read -p "Enter destination path:" dirr
find "$1" -maxdepth 1 -name "*.tar" -exec basename {} \; | xargs mkdir -p "$dirr"
答案 0 :(得分:1)
如果您要查找的是为特定目录中的每个tar文件生成目录,那么在-exec
中运行shell会怎么样?
read -p "Enter destination path:" dest
[ -d "$dest" ] || exit 1
find "$dest" -maxdepth 1 -name "*.tar" -exec sh -c 'mkdir -p "${0%.tar}"' {} \;
或者,如果你想在shell中单独执行此操作,可能会执行for循环:
for tarfile in "$dest"/*.tar; do
mkdir -p "${tarfile%.tar}"
done
请注意,如果目标目录中不存在tar文件,这可能会产生有趣的结果。