我想编写一个简单的脚本来检测由 Windows 病毒创建的文件。通常它会创建一个 .exe 文件,与它放置的目录同名。
这是脚本。只有在路径名不包含\n 时才有效。有人可以帮我修复这个脚本,拜托!
#!/bin/bash
if [ $# == 0 ]; then
echo ""
echo "==== Give me a directory to begin with! ===="
echo ""
exit
fi
for f in `find $1 -name '*.exe'` ; do
filename=`basename "$f" .exe`
dir_name=`dirname "$f"`
current_dir_name=`basename "$dir_name"`
if [ $filename == $current_dir_name ]; then
rm -f "$f" # It can't remove files
# where the path contains spaces or \n ??!!
fi
done
Run Code Online (Sandbox Code Playgroud) 我试图在 /home/dir/ 下的某处找到一个(应该)包含字符串“1896.345”的文件。
关于如何做到这一点的任何想法?谢谢
我有 1000 个目录和 5-15 个包含 mp3 文件的子目录。我想列出所有没有路径的歌曲。可行吗?
或者有没有办法从路径中获取最后一个“\”之后的单词,以便我们可以从中检索文件名?一些正则表达式之类的?
我在以下命令中出错
cd /opt/lampp/htdocs/EspoCRM-2.5.2 && find data -type d -exec chmod 775 {}
Run Code Online (Sandbox Code Playgroud)
错误:
find: missing argument to `-exec'
Run Code Online (Sandbox Code Playgroud) 我希望程序看起来像这样:
read a
if[ find . name $a ]; then
echo "You found the file"
else "You haven t found the file"
fi
Run Code Online (Sandbox Code Playgroud) 我有许多嵌套在许多子文件夹中的 7z 存档,并且希望将所有这些存档提取到它们所在的文件夹中,然后删除原始存档。
我已经找到了如何执行此操作,同时提取到根目录。
while [ "`find . -type f -name '*.7z' | wc -l`" -gt 0 ]; do find -type f -name "*.7z" -exec 7za x -- '{}' \; -exec rm -- '{}' \;; done
Run Code Online (Sandbox Code Playgroud)
然而,所有档案都被解压到我执行命令的目录中——我想将所述档案提取到保留原始结构的原始位置,但不确定如何更改它来做到这一点。
我已经有了(更多)快速搜索文件的别名:
alias f='find . -iname'
Run Code Online (Sandbox Code Playgroud)
我这样使用它:
$ f *statis*
./main/statistics.py
./test/test_statistics.py
Run Code Online (Sandbox Code Playgroud)
现在,我想要另一个别名来执行相同的搜索,但不是打印出找到的文件,而是在 vim 中打开它们。理想情况下,它会在找到多个文件时工作。
我试过(使用 'echo' 而不是 'vim' 进行调试):
alias fvi='find . -exec echo {} + -iname'
Run Code Online (Sandbox Code Playgroud)
...但似乎-exec取消了-iname之后的到来:
$ fvi *statis*
./main/statistics.py ./main/probability.py ./test/test_statistics.py
./test/test_probability.py
Run Code Online (Sandbox Code Playgroud) 我将大量(Android SDK)文件从共享目录复制到我的系统。现在,它们的 MIME 类型为application/x-shellscriptor 的所有文件application/x-executable似乎都不可执行。例如,当我尝试运行时出现mksdcard此错误:
$ ./mksdcard
bash: ./mksdcard: Permission denied
Run Code Online (Sandbox Code Playgroud)
如何仅找到具有这些 MIME 类型的文件?然后我如何更改这些权限?
注意事项:
1- 当我find <path> -type f -executable以 root 用户身份尝试时,它会显示所有文件(甚至 .PNG 文件),而当我以标准用户身份尝试时,它什么也没显示。我不知道如何过滤文件并注意它们的 MIME 类型。
2- 当前无法访问共享目录(源)。
谁能告诉我这个脚本有什么问题?
它在 中不起作用cron,但在我正常执行时工作正常。
警告:此命令很危险,可能会删除大量文件
#!/bin/bash
/bin/find . -maxdepth 1 -type d -ctime +2 -exec /bin/rm -rf {} \;
Run Code Online (Sandbox Code Playgroud) 我需要在当前目录中找到一个文件,其大小应小于或等于 10 MB。
ls -lh 给了我每个文件的文件大小,但不确定如何找到大小小于或等于 10 MB 的文件。
host@407d:t1_snapshot$ ls -lth
Run Code Online (Sandbox Code Playgroud)
有什么办法可以做到吗?