我正在尝试创建一个 bash 脚本,它将在系统中搜索图像jpg, jpeg, png, gif
并将它们复制到新位置。但我很难弄清楚如何做到这一点。
这是我到目前为止
#!/bin/bash
STRING="Copy system images \n"
echo $STRING
# settings
$LOCATION = ~/backup/images/$(date)
$FILETYPE = jpg, jpeg, png, gif
# in PHP
# preg_replace("/[^, ]+/", "*.$0", $input_lines);
# bash?? filetype should be *.jpg, *.jpeg, *.png, *.png
# find all images defined in FILETYPE
find ~/ -type f -iname $FILETYPE > images.txt
&& echo "Number of images loccated: "
&& wc -l images.txt
# read every line (image path), and copy to new location.
&& while read line; do cp $line ~/backup/$line; done < images.txt
&& rm images.txt
Run Code Online (Sandbox Code Playgroud)
我知道,这可能有点矫枉过正。但是自动脚本会很棒!
如您所见,我不知道如何 sed、preg_replace $FILETYPE
. 而过度使用&&
似乎不对?
要查找在主目录中的所有文件jpg
,jpeg
,png
,或gif
扩展和复制他们~/backup
,尝试:
cd
find . -regex '.*\(jpg\|jpeg\|png\|gif\)' \! -path './backup/*' -exec echo cp -t backup {} +
Run Code Online (Sandbox Code Playgroud)
cd
这使得主目录 ,~/
与当前目录相同./
。
find .
在当前目录中查找文件
-regex '.*\(jpg\|jpeg\|png\|gif\)'
结果限制为文件名称以结尾jpg
,jpeg
,png
,或gif
。
\! -path './backup/*'
忽略备份目录中已有的文件。
请注意,虽然-regex
期望正则表达式作为其参数,但 -path
期望是glob。这是两种非常不同的形式,它们遵循非常不同的规则。
-exec echo cp -t backup {} +
将找到的文件移动到备份目录。
归档时间: |
|
查看次数: |
4914 次 |
最近记录: |