将不带文件扩展名的文件复制到新文件夹并重命名
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}"
我只是在周末决定试用 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}"