我正在尝试访问目录及其子目录中的所有文件,并尝试使用以下代码来实现它:
但是由于我对bash的知识缺乏,导致出现了以下错误:
这是我的文件夹设置:
#!/bin/bash
NEWNAME="newFile"
echo "- - - - - - - - - - - "
for f in *\ *; do mv "$f" "${f// /_}"; done
for f in *.* *; do mv "$f" "${f// /_}"; done
FILES=$(find ./ -type f)
for f in $FILES; do
path=$(dirname "${f}")
extension="${f##*.}"
echo $extension;
mv "$f" "${f/$f/${$path/$NEWNAME.$extension}}"
done
但是由于我对bash的知识缺乏,导致出现了以下错误:
mv: rename * * to *_*: No such file or directory
mv: rename very_important_folder to very_important_folder/very_important_folder: Invalid argument
//very_important_folder/bob
./app.sh: line 13: ${$path/$NEWNAME.$extension}: bad substitution
这是我的文件夹设置:
-very important folder:
-|filewithoutspaces.py
-|anothersubfolder:
--|file with spaces.txt
-app.sh
因此,我正在尝试更改目录中所有文件的名称为newname,但保留原有扩展名。我遇到了更改带有空格名称的文件的问题,并且对bash并不熟悉。 它确实可以更改非文件夹中的文件,但无法更改子目录中的文件。 我使用的是MacBook Air (M1, 2020) macOS 12.3 Monterey。
a.txt
、b.txt
和c.txt
的文件夹开始,您希望最终得到什么?另外,您代码的第一部分似乎在尝试重命名文件以用下划线替换空格。这是一个单独的活动还是与代码的其余部分有关? - pjh