将不带文件扩展名的文件复制到新文件夹并重命名

Copy file without file extension to new folder and rename it

我只是在周末决定试用 zsh 并从中获得一些乐趣。不幸的是,我是 shell 一般脚本的新手。

我在这个文件夹中有一个文件,文件名是哈希值 (4667e85581f80b6936f8811f0a7493c70eae4ee7),没有文件扩展名。

我想做的是将此文件复制到另一个文件夹并将其重命名为 "screensaver.png"。

我试过以下代码:

#!/usr/bin/zsh

KUVVA_CACHE="$HOME/Library/Containers/com.kuvva.Kuvva-Wallpapers/Data/Library/Application Support/Kuvva"
DEST_FOLDER="/Library/Desktop Pictures/Kuvva/$USERNAME/screensaver.png"

for wallpaper in ${KUVVA_CACHE}; do
    cp -f ${wallpaper} ${DEST_FOLDER}
done

此returns以下错误:

cp: /Users/Morten/Library/Containers/com.kuvva.Kuvva-Wallpapers/Data/Library/Application Support/Kuvva is a directory (not copied).

当我尝试回显 $wallpaper 变量而不是 "cp" 时,它只是回显文件夹路径。

文件名每 6 小时更改一次,这就是我执行 for 循环的原因。所以我永远不知道文件的名称是什么,但我知道文件夹中始终只有一个文件。

有什么办法可以做到这一点吗? :)

非常感谢!

它应该适用于常规文件名扩展(通配)。

KUVVA_CACHE="$HOME/Library/Containers/com.kuvva.Kuvva-Wallpapers/Data/Library/Application Support/Kuvva/"

然后复制

cp -f ${KUVVA_CACHE}/* ${DEST_FOLDER}

您可以将脚本添加到您的 crontab 中,这样它就会 运行 在特定的时间间隔。使用 'crontab -e' 编辑它并添加

30 */3 * * * /location/of/your/script

这将 运行 每三个小时。第一位数字是分钟。星号表示任何。按转义键退出编辑器,然后按 shift+: 并输入 wq 并按回车键。这些 vi 命令。

不要忘记 'chmod 0755 file-name' 脚本,这样它就可以执行了。

这是脚本。

#!/bin/zsh

KUVVA_CACHE="$HOME/Library/Containers/com.kuvva.Kuvva-Wallpapers/Data/Library/Application Support/Kuvva"
DEST_FOLDER="/Library/Desktop Pictures/Kuvva/$USERNAME/screensaver.png"

cp "${KUVVA_CACHE}/"* "${DEST_FOLDER}"