脚本在完成之前就已经完成了;将文件从一组初始输入文件创建为具有不同后缀的输出文件,例如。
file1.ext -> file1.oxt
(注意,给出的扩展名是任意的)。
在重新运行初始脚本之前,如何仅将已存在输出文件的输入文件移动到单独的目录中?类似于“仅当 basename(file).oxt 存在时才创建 mv 文件”。其他语言也可以做到这一点,但我对 Bash 的了解非常缺乏。
谢谢!
答案1
这是你的 bash 脚本:
for file in `ls *.old`
do
BASE="${file%.*}"
if [[ -e ${BASE}.new ]]
then
mv $file /yourdir/
fi
done
只需将 .old 和 .new 替换为您的后缀,将 yourdir 替换为您的真实目录即可。
答案2
寻找+巴什解决方案:
find . -type f ! -name "*.oxt" -exec bash -c 'f=$1;
fp="${f%.*}"; [[ -f "$fp.oxt" ]] && mv "$f" dest_dir/' _ {} \;
f=$1
- 完整的文件路径fp="${f%.*}"
- 删除扩展名的文件路径(无扩展名)[[ -f "$fp.oxt" ]]
- 检查相应的“输出”文件是否存在mv "$f" dest_dir/
- 将初始文件移动到dest_dir
目录