相关疑难解决方法(0)

递归查找具有特定扩展名的文件

我正在尝试使用我的bash(最新的Ubuntu LTS版本)在目录及其子目录中查找具有特定扩展名的所有文件.

这是在脚本文件中写的:

#!/bin/bash

directory="/home/flip/Desktop"
suffix="in"

browsefolders ()
  for i in "$1"/*; 
  do
    echo "dir :$directory"
    echo "filename: $i"
    #   echo ${i#*.}
    extension=`echo "$i" | cut -d'.' -f2`
    echo "Erweiterung $extension"
    if     [ -f "$i" ]; then        

        if [ $extension == $suffix ]; then
            echo "$i ends with $in"

        else
            echo "$i does NOT end with $in"
        fi
    elif [ -d "$i" ]; then  
    browsefolders "$i"
    fi
  done
}
browsefolders  "$directory"
Run Code Online (Sandbox Code Playgroud)

不幸的是,当我在终端中启动这个脚本时,它说:

[: 29: in: unexpected operator
Run Code Online (Sandbox Code Playgroud)

($extension而不是 …

linux bash recursion

402
推荐指数
8
解决办法
46万
查看次数

何时在shell变量周围包装引号?

有人能告诉我是否应该在shell脚本中包含变量的引号?

例如,以下是正确的:

xdg-open $URL 
[ $? -eq 2 ]
Run Code Online (Sandbox Code Playgroud)

要么

xdg-open "$URL"
[ "$?" -eq "2" ]
Run Code Online (Sandbox Code Playgroud)

如果是这样,为什么?

unix linux bash shell quotes

145
推荐指数
4
解决办法
5万
查看次数

如何按文件类型递归查找文件并在ssh中将它们复制到目录?

我想找到pdf一个文件夹中的所有文件.它包含pdf内部文件和更多包含更多内容的目录.该文件夹位于我有ssh访问权限的远程服务器上.我正在使用mac终端,但我相信我连接的服务器是Centos.

我需要找到所有的pdfs并将它们全部复制到远程服务器上的一个目录中.我已经尝试了大约10种变化而没有运气.我和远程系统似乎都没有将-exec识别为命令,尽管exec很好,所以这是一个问题.

我不知道这里的问题是什么,但命令不会失败它只是坐在那里并永远失速所以我没有任何有用的错误发布.

cp $(find -name "*.pdf" -type f; exec ./pdfsfolder {} \; | sed 1q)

find: ./tcs/u25: Permission denied
find: ./tcs/u68: Permission denied
-bash: /var/www/html/tcs_dev/sites/default/files/pdfsfolder: is a directory
-bash: exec: /var/www/html/tcs_dev/sites/default/files/pdfsfolder: cannot execute: Success
cp: target `./runaways_parents_guide_2013_final.pdf' is not a directory
Run Code Online (Sandbox Code Playgroud)

这是我尝试的最后一个,我想我现在可以忽略权限被拒绝的错误,但我不确定其余的.

linux bash centos

46
推荐指数
3
解决办法
9万
查看次数

如何在具有特定扩展名的文件中递归地执行 grep 操作?

要查找.out子目录中带有扩展名的所有文件路径,我使用

find . -name '*.out'
Run Code Online (Sandbox Code Playgroud)

要在所有以 结尾的文件中 grep 一个模式.out,我使用

grep pattern *.out
Run Code Online (Sandbox Code Playgroud)

如何组合这两个命令,以便找到所有文件,然后在这些文件中执行 grep 操作?

我正在寻找一种优雅的替代品

grep -r 'pattern' . | grep '.out'
Run Code Online (Sandbox Code Playgroud)

grep find

4
推荐指数
1
解决办法
5524
查看次数

标签 统计

bash ×3

linux ×3

centos ×1

find ×1

grep ×1

quotes ×1

recursion ×1

shell ×1

unix ×1