我之前使用 find 查找文件夹和子文件夹中的所有特定文件并对其进行处理
例如,我确实使用了
find /folder/ -name '*.txt' -exec chmod 666 {} \;
Run Code Online (Sandbox Code Playgroud)
此代码可轻松更改对文件夹中每个文本文件的写入权限。
现在我打算尝试以相同的方式将每个 jpg(甚至 JPG)转换为 gif,但不确定这是否那么容易。当我尝试使用 convert 命令工具时,它想要一个输入文件名和输出文件名,但我认为 find 没有给出,所以可能 find 不是正确的工具使用?
我尝试使用 PHP 读取我的文件夹和子文件夹来创建一个基本菜单供我使用,但我注意到当我这样做时需要一些时间,因为每次我转到页面时它都必须运行它。
然后我在想,为什么不使用 bash 并让它创建一个 PHP 可以读取的文本文件,并让它每天晚上使用 crontab 运行?所以我搜索并尝试过,但这并不容易。
使用此代码,我可以获得一个子文件夹
for D in /var/www/html/lib/*; do
if [ -d "${D}" ]; then
echo "${D}"
fi
done
Run Code Online (Sandbox Code Playgroud)
它给了我
/var/www/html/lib/folder1
/var/www/html/lib/folder2
/var/www/html/lib/folder3
...
Run Code Online (Sandbox Code Playgroud)
但是文件夹都有子文件夹,比如
/var/html/lib/folder1/1990
...
Run Code Online (Sandbox Code Playgroud)
我的想法是做一个循环然后使用
myfolder= "${D}"
addresstoremove="var/www/html/"
printf '%s\n' "${myfolder//$addresstoremove/}" >> textfile.txt
Run Code Online (Sandbox Code Playgroud)
所以它删除了我在 PHP 代码中不需要的地址
在这里的大力帮助下,我很快将所有 jpg 文件转换为 gif(再次感谢很多)
但是当我环顾我的文件时,我注意到我在某些文件夹的文件名中添加了一个零。
我试图拥有的文件名标准是 001.gif、002.gif.... 但有些文件有 01.gif、02.gif 等等,这对我不利。
因此,使用代码,我从转换中得到,我找到了一个叫做地球之星的东西,我准备好看看我是否可以为自己解决这个问题:)
但是当我运行代码时什么也没发生。现在我只是尝试看看是否可以转换具有 JPG 的文件
for f in /lib/**/*jpg; do
if [ "${#f}" -eq 2 ]; then
mv "$f" "0$f"
fi
done
Run Code Online (Sandbox Code Playgroud)