我试图将一堆名为 folder.jpg 的文件复制到一个文件夹中。问题是因为所有文件都命名为相同的东西,我需要在过程中重命名它们。我知道我可能可以用 sed 做到这一点,但我想将它们重命名为父文件夹的一部分的名称。这是我找到并复制文件所得到的
cp $(find . -iname "folder.jpg") .albumart/
Run Code Online (Sandbox Code Playgroud)
文件夹结构是 ./artist/artist.year.album/folder.jpg 以及我想使用父文件夹(或只是其中的一部分)来命名文件的内容。有人可以用一个班轮帮助我完成任务吗?更棘手的是,有些文件夹还有一层 CD1 和 CD2,如果它们存在,我想忽略它们(例如 ./artist/artist.year.album/CD1/folder.jpg)
假设您有bash
,此版本仅采用您的文件夹结构(例如./foo/bar/baz/folder.jpg
)并用下划线替换所有斜线(例如,您得到foo_bar_baz_folder.jpg
):
find . -iname folder.jpg -exec bash -c 'for x; do x=${x#./}; cp -i "$x" ".albumart/${x//\//_}"; done' _ {} +
Run Code Online (Sandbox Code Playgroud)
请注意,无论您做什么,每当您将文件从多个位置移动到同一目的地时,总是有可能发生名称冲突。
归档时间: |
|
查看次数: |
2753 次 |
最近记录: |