我现在正试图在终端中查找文件。我找到了很多关于如何查找特定模式的文件的答案,例如以特定扩展名或特定时间范围结尾的文件等。
不过,我一直试图弄清楚如何查找和复制多个任意文件,例如特定文件的列表。
举例来说,我有以下文件夹和文件
/Documents/Folder_1/内容:
file1.txt file2.txt file3.txt file4.txt
Run Code Online (Sandbox Code Playgroud)
/Documents/Folder_2/内容:
file5.txt file6.txt file7.txt
Run Code Online (Sandbox Code Playgroud)
/Documents/Folder_3/内容:
file8.txt, file9.txt
Run Code Online (Sandbox Code Playgroud)
我想做的是创建一个名为Folder_4并复制的新文件夹file2.txt,file5.txt然后file9.txt复制到该新文件夹。
有没有办法通过终端来做到这一点?
我尝试做的是制作文件名的文本列表并将其命名为 list.txt 之类的名称,例如
file2.txt
file5.txt
file9.txt
Run Code Online (Sandbox Code Playgroud)
并将该文本文件加载到“查找”命令中,例如如下所示:
find /home/usr/Documents -name $cat list.txt
Run Code Online (Sandbox Code Playgroud)
我认为我会将输出提供给文本列表或复制命令,但这似乎不起作用。
我想知道是否有任何方法可以通过 Find 命令查找多个任意文件,或者我是否以错误的方式思考这个问题?
编辑:只是想感谢您的回答并总结我最终解决这个问题的方式。我特别感谢有人向我解释 find 命令的设计目的不是接受多个没有 -o 标志的输入,这让我觉得不那么愚蠢了,因为无法弄清楚!
我最终做的是制作一个小 shell 脚本并要求用户输入并使用数组和 for 循环来迭代列表。
基本上我最终得到的脚本或多或少是这样的:
file1.txt file2.txt file3.txt file4.txt
Run Code Online (Sandbox Code Playgroud) 我想编写一个 shell 程序,它将遍历名称与这样的模式匹配的所有文件夹:
sudo sh shell.sh pub
Run Code Online (Sandbox Code Playgroud)
运行时,脚本将查找名称包含的所有文件夹pub并打印其修改日期。我希望有代码可以打印出如下图所示的结果:
我有这个代码,但它没有给我我期望的结果。
echo 'the folder '$1' was modified at ';
find -type d -name 'kam*' -exec stat -c '%y %n' '{}' \;
Run Code Online (Sandbox Code Playgroud)
我必须遍历每个文件夹并输出文本echo 'the file '$1' was modified at ';并打印图像中的日期。
我想要这样的结果:
netcom@hotspot:~$ bash script.sh testRegex Pub
the folder testRegex was modified on may 15 01:19
the folder Public was modified on may 19 01:19
the folder Pubos was modified on may 19 01:19
Run Code Online (Sandbox Code Playgroud)