【问题标题】:Run a function on all filenames in a list对列表中的所有文件名运行函数
【发布时间】:2022-11-02 07:25:39
【问题描述】:

我使用ag 选择文件名并将它们通过以下脚本传送到fzy

set "$(ag -f -g "\.gz$" tmp/ archives/ | pipe_if_not_empty fzy )"
echo "selected file: $1"
pipe_if_not_empty () {
  head=$(dd bs=1 count=1 2>/dev/null; echo a)
  head=${head%a}
  if [ "x$head" != x"" ]; then
    { printf %s "$head"; cat; } | "$@"
  fi
}

如何对找到的所有文件运行函数,所以只选择了比我的output/ 文件夹中已有的同名文件更新的文件?

【问题讨论】:

  • 看起来您正在尝试获取所有以 .gz 结尾的文件。你可以使用内置的find 命令来做到这一点:find tmp/ archives/ -type f -name '*.gz'
  • 当然可以,但我需要选择可能性和模糊搜索功能

标签: bash


【解决方案1】:

您可以使用xargs 命令在输出的每一行上运行一个命令。

例如:find . -name '*.bak' -type f -print | xargs rm -r 将删除所有以 .bak 结尾的文件

【讨论】:

  • 那么我如何使用 find 来比较日期呢?
  • 那么我如何将其输入ag
猜你喜欢
  • 2015-04-19
  • 2019-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-19
  • 1970-01-01
  • 1970-01-01
  • 2021-12-18
相关资源
最近更新 更多