在 find -execdir 中从文件名中去除 ./

2024-02-02

整个故事:我正在编写一个脚本,将所有文件从一个目录链接到另一个目录。新文件名将包含原始目录名。我用find此时此刻与-execdir选项。

这就是我想使用它的方式:

./linkPictures.sh 2017_wien 2017/10

它将创建一个符号链接2017_wien_picture.jpg in 2017/10指向一个文件2017_wien/picture.jpg.

这是我当前的脚本:

#!/bin/bash
UPLOAD="/var/www/wordpress/wp-content/uploads"
SOURCE="$UPLOAD/photo-gallery/$1/"
DEST="$UPLOAD/$2/"
find $SOURCE -type f -execdir echo ln -s {} $DEST/"$1"_{} ";"

它打印:

ln -s ./DSC03278.JPG /var/www/wordpress/wp-content/uploads/2017/10/pokus_./DSC03278.JPG

这就是我要的:

ln -s ./DSC03278.JPG /var/www/wordpress/wp-content/uploads/2017/10/pokus_DSC03278.JPG

如何实施?我不知道如何合并basename进入剥离。/。


To run basename on {}你需要通过执行命令sh:

find "$SOURCE" -type f -execdir sh -c "echo ln -s '{}' \"$DEST/${1}_\$(basename \"{}\")\"" ";"

这不会赢得任何速度竞赛(因为sh对于每个文件),但它会起作用。

所有的引用可能看起来有点疯狂,但有必要确保可能包含空格的文件的安全。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 find -execdir 中从文件名中去除 ./ 的相关文章

  • bash 脚本中的未绑定变量

    在调试我的脚本时 我变得绝望 我使用了我的高级同事向我推荐的一些结构 但我不知道如何使其正常工作 bin bash x set ueo pipefail exec gt tmp dq log source BASH SOURCE env p
  • 如何转义 bash 别名中的空格?

    尝试在我的 bashrc 文件中设置一些别名 这个 export alias umusic Volumes 180 gram Uncompressed 出现以下错误 bash cd Volumes 180 没有这样的文件或目录 当我尝试 c
  • 从配置文件中读取分配

    我有配置文件 其中每行都包含用分号分隔的分配 像这样的东西 模仿正常的 shell 分配 VAR1 1 VAR2 2 VAR1 3 VAR2 4 每行包含相同的变量 并且旨在单独处理 这些配置文件都在系统管理员的控制之下 所以使用eval现
  • Bash:替换管道标准输入中的子字符串

    我尝试用新的子字符串替换标准输入中的某个子字符串 在读取几个文件后 我必须从管道获取标准输入cat 然后我想将更改后的字符串向前推到管道中 这是我尝试做的 cat file1 file2 echo cat path to file path
  • git 可以知道你当前的分支是从哪个分支分支出来的吗?

    我想创建一个 git 别名 让我可以从其分支的原始分支同步我的分支 例如 如果我从
  • 如何在不同的目录中执行python脚本?

    Solved对于可能觉得这有帮助的人 请参阅下面我的答案 我有两个脚本 a py 和 b py 在我当前的目录 C Users MyName Desktop MAIN 中 我运行 gt python a py 第一个脚本 a py 在我当前
  • 在 Bash 中使用“$RANDOM”生成随机字符串

    我正在尝试使用 Bash 变量 RANDOM创建一个由包含整数和字母数字的变量中的 8 个字符组成的随机字符串 例如 var abcd1234ABCD 我怎样才能做到这一点 使用参数扩展 chars 是可能的字符数 是模运算符 chars
  • 如何调用 awk 中的 split 函数来分割“\.”上的字符串?

    我该如何使用split用 分割的函数 例如 首先考虑分割 echo 03 26 12 awk split 0 a print a 3 a 2 a 1 产生以下输出 122603 但如果传入的字符串是 echo 03 26 12 awk sp
  • 是否可以为我的 Linux 函数复制命令的制表符补全?

    假设我有一个名为的 bash shell 函数magic 我想定义一个制表符补全功能 magic这将允许magic搭载任何给定命令的选项卡完成功能 如果可用 换句话说 我想要magic能够做这样的事情 magic git
  • Bash脚本无法执行Go命令

    我正在尝试编写一个 bash 脚本来自动在不同的目录中运行 go get install 相关部分在这里 cd web go get cd web go install cd services go get cd services go i
  • Bash 退出前运行脚本

    我想在每次关闭 Bash 会话时运行一个脚本 我使用 XFCE 和 Terminal 0 4 5 Xfce 终端仿真器 我想每次关闭终端中的选项卡 包括最后一个选项卡 时运行一个脚本 当我关闭终端时 类似 bashrc 但在每个会话结束时运
  • 如何通过双击使该 file.sh 可执行?

    首先我用的是Mac 接下来 我需要执行这个 file sh 我们将调用它 每次我需要执行它时 我都必须打开终端并输入 cd Users Jacob Documents folderWithFileInIt bash file sh 这没关系
  • 单元测试 Bash 脚本

    我们的系统除了 Java 代码之外还运行一些 Bash 脚本 既然我们正在努力测试所有可能损坏的东西 并且那些 Bash 脚本可能会损坏 我们想测试它们 问题是很难测试 Bash 脚本 有没有测试 Bash 脚本的方法或最佳实践 或者我们应
  • 为 bash 脚本输出的每一行添加自脚本启动以来的时间前缀

    标题中的主要问题 我想为脚本输出的每一行添加自脚本开始以来的时间前缀 背景 我使用 GNU 并行来运行作业 其中一些会产生输出 大多数不会 我想在每个任务的输出行前面加上自该任务开始以来的时间 您可以在顶部添加一行bash像这样的脚本 bi
  • 使用 awk 处理多个文件

    我必须使用 awk 处理大量 txt 文件 每个文件 1600 万行 我必须阅读例如十个文件 File 1 en sample 1 200 en n sample 2 10 en sample 3 10 File 2 en sample 1
  • 如何在 Bash 脚本中将heredoc写入文件?

    如何在 Bash 脚本中将此处文档写入文件 阅读高级 Bash 脚本指南第 19 章此处文档 http tldp org LDP abs html here docs html 这是一个将内容写入文件的示例 tmp yourfilehere
  • 如果给定键对应的值以指定字符串开头,则使用 jq 更新 JSON 文档中的对象

    我有给定的 JSON 并想更改id所有元素的值 以test in the name元素 other value some id values name test 2017 12 01 id 1 name othert id 2 以下 jq
  • seq 使用逗号作为小数点分隔符

    我注意到一个奇怪的现象seq我的一台计算机 Ubuntu LTS 14 04 上的行为 不是使用点作为小数点分隔符 而是使用逗号 seq 0 0 1 0 2 0 0 0 1 0 2 我的另一台 PC 上相同版本的 seq 8 21 给出了正
  • 在 bash tee 中,正在将函数变量设置为本地函数,我该如何逃避这个问题?

    我一直坚持使用 bash scipt 它应该同时写入标准输出和文件 我正在使用函数和其中的一些变量 每当我尝试将函数重定向到文件并用 tee 在屏幕上打印时 我无法使用在函数中使用的变量 因此它们以某种方式变成本地变量 这是一个简单的例子
  • brew install python,但随后:“python-2.7.6 已安装,只是未链接”

    免责声明 菜鸟 操作系统 10 8 5 当我在 bash 中安装 python 时 我得到了这个警告和错误 https i stack imgur com TBgBT png Warning Could not link python Un

随机推荐