linux - bash 找到前导 '.' 的返回路径如何从返回字符串中删除这个字符?

标签 linux bash

我正在 apache 日志目录中运行以下行以将旧的(以前压缩的)日志移动到存储位置:

/usr/local/apache2.2/logs$ find . -name '*.gz' -exec cp {} /home/itadmin/temp4{} \;

由于“.”,结果略有偏差包含在返回的文件路径中:

cp: cannot create regular file `/home/itadmin/temp4./default/error/error.1315029600.gz': No such file or directory

有没有简单的方法来消除'.'从文件路径,同时仍然尽可能接近现在编写的方式使用上述命令?

最佳答案

您可以像这样在 cp 的一次调用中复制所有文件:

$ find . -name '*.gz' -exec cp --target-directory=/home/itadmin/temp4 {} +

或者只需在原始命令中添加一个斜杠:

/usr/local/apache2.2/logs$ find . -name '*.gz' -exec cp {} /home/itadmin/temp4/{} \;

关于linux - bash 找到前导 '.' 的返回路径如何从返回字符串中删除这个字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7336598/

相关文章:

android - 如何从 bash 构建 Xabber?

linux - 如何在 vim 上允许引号在 'textwidth' 之后结束?

c# - .NET Core 1.1 控制台应用程序总是在 Ubuntu 16.04 上作为 systemd 服务退出/崩溃

linux - 将 PATH 环境变量导入到使用 cron 启动的 Bash 脚本中

linux - 远程 linux 服务器到远程 linux 服务器大型稀疏文件复制 - 如何?

bash - 在 shell 脚本中解压缩文件时出错。 - 需要PK兼容。 v5.1(可以做v4.6)

从循环调用的函数中未调用 Bash 陷阱

linux - 在 Bash 中使用基于 Perl 的重命名命令和查找

Python的subprocess.Popen()及源码

regex - 如何用制表符替换字符串中所有重复的空格