我正在尝试使用我的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而不是 …
有人能告诉我是否应该在shell脚本中包含变量的引号?
例如,以下是正确的:
xdg-open $URL
[ $? -eq 2 ]
Run Code Online (Sandbox Code Playgroud)
要么
xdg-open "$URL"
[ "$?" -eq "2" ]
Run Code Online (Sandbox Code Playgroud)
如果是这样,为什么?
我想找到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)
这是我尝试的最后一个,我想我现在可以忽略权限被拒绝的错误,但我不确定其余的.
要查找.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)