我正在尝试使用 .bash 文件读取 bash 中命令的输出while loop。
while read -r line
do
echo "$line"
done <<< $(find . -type f)
Run Code Online (Sandbox Code Playgroud)
我得到的输出
ranveer@ranveer:~/tmp$ bash test.sh
./test.py ./test1.py ./out1 ./test.sh ./out ./out2 ./hello
ranveer@ranveer:~/tmp$
Run Code Online (Sandbox Code Playgroud)
在这之后我试过了
$(find . -type f) |
while read -r line
do
echo "$line"
done
Run Code Online (Sandbox Code Playgroud)
但它产生了一个错误test.sh: line 5: ./test.py: Permission denied。
那么,我如何逐行阅读它,因为我认为目前它正在一次吞食整行。
所需输出:
./test.py
./test1.py
./out1
./test.sh
./out
./out2
./hello
Run Code Online (Sandbox Code Playgroud) 如何获取包含名称与特定模式匹配的文件的子目录列表?
更具体地说,我正在寻找包含文件名中出现字母“f”的文件的目录。
理想情况下,该列表不会有重复项,并且只包含没有文件名的路径。
如何为使用该find命令找到的每个文件运行特定命令?出于问题的目的,可以说我只想删除find.
假设我有:
foo.txt
bar
baz.ooo
Run Code Online (Sandbox Code Playgroud)
如果我使用,ls -1 !(*.*)那么我只会得到bar输出。太好了,现在我希望找到相同的结果 - 有些find -regex可以完成这项工作。
笔记:
find -name !(*.*)不是答案,因为!(*.*)它仍然是我无法使用的 Bash glob。
我想使用以下find命令重命名多个文件(file1 ... fileN 到 file1_renamed ... fileN_renamed):
find . -type f -name 'file*' -exec mv filename='{}' $(basename $filename)_renamed ';'
Run Code Online (Sandbox Code Playgroud)
但收到此错误:
mv: cannot stat ‘filename=./file1’: No such file or directory
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为文件名不被解释为 shell 变量。
我正在尝试列出、和中的所有文件dir1,这些文件可能位于我使用该命令的子目录中的任何位置。我尝试了以下但没有成功:dir2dir3dir4cwdfind
find . -type f -regextype posix-egrep -regex 'dir1/.+|dir2/.+|dir3/.+|dir4/.+'
Run Code Online (Sandbox Code Playgroud)
我也试过posix-extended了。如何列出这些文件?
HP-UX ***** B.11.23 U ia64 **** 无限制用户许可证
find . -type d -name *log*?|?xargs ls -la
Run Code Online (Sandbox Code Playgroud)
给我目录名称(包含log在目录名称中的名称),后跟该目录中的所有文件。
目录?/var/opt/SID/application_a/log/,?/var/opt/SID/application_b/log/,?/var/opt/SID/application_c/log/等等包含日志文件。
我只希望ls命令列出两个最新的日志文件,我通常使用ls -latr?|?tail -2.
输出必须是这样的..
find . -type d -name *log*?|?xargs ls -la
Run Code Online (Sandbox Code Playgroud)
find . -type d -name *log*?|?xargs ls -la?|?tail -2没有给我上面的结果。我得到的是最后两个find . -type d -name *log*?|?xargs ls -la命令文件的列表
。
那么我可以在管道之后管道命令xargs吗?我如何查询,以获取上述格式的结果文件列表?
/var/opt/SID/application_a/log/
-rw-rw-rw- 1 user1 user1 59698 Jun 11 2013 log1
-rw-rw-rw- 1 user1 user1 59698 Jun …Run Code Online (Sandbox Code Playgroud) 代码
find / -name netcdf
Run Code Online (Sandbox Code Playgroud)
输出
find: `/root/.dbus': Permission denied
find: `/root/.gconf': Permission denied
find: `/root/.gconfd': Permission denied
find: `/root/.gnome': Permission denied
find: `/root/.gnome2': Permission denied
find: `/root/.gnome2_private': Permission denied
Run Code Online (Sandbox Code Playgroud) 显而易见的
ls -dR
Run Code Online (Sandbox Code Playgroud)
不起作用。
我目前正在使用
find /path/ -type d -ls
Run Code Online (Sandbox Code Playgroud)
但输出不是我需要的(子文件夹的简单列表)
有出路吗?
我嵌套在一个文件树的深处,我想找到哪个父目录包含一个文件。
例如,我在一组嵌套的 GIT 存储库中,想要找到.git控制我当前所在文件的目录。我希望像
find -searchup -iname ".git"
Run Code Online (Sandbox Code Playgroud)