【问题标题】:Create directories using find and xarg使用 find 和 xargs 创建目录
【发布时间】:2017-05-30 05:26:01
【问题描述】:

我的想法是找到路径 $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"

【问题讨论】:

  • 您希望生成什么样的输出?比如foo.tar这个文件存在,你要这个创建什么目录?
  • @ghoti 目录将是 foo

标签: linux bash shell


【解决方案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 文件,这可能会产生有趣的结果。

【讨论】:

  • 很高兴我能帮上忙!如果您觉得这足以解决您的问题,请随时单击我的答案左侧的绿色复选标记。 :)
猜你喜欢
  • 2020-04-10
  • 1970-01-01
  • 2012-10-22
  • 1970-01-01
  • 2016-08-22
  • 1970-01-01
  • 2015-01-10
  • 2013-08-20
  • 1970-01-01
相关资源
最近更新 更多