kst*_*pt3 5 xargs filenames rename
我有了一个目录中.zip
的文件和其他文件(所有文件有一个扩展名),我想添加一个后缀的所有文件没有的.zip
扩展。我能够挑选一个后缀并将其放入一个变量中$suffix
,因此我尝试了以下代码:
ls -I "*.zip"| xargs -I {} mv {} {}_"$suffix"
这列出了所有没有.zip
和接近的文件(但错误)。它错误地产生了以下结果file.csv
:
file.csv_suffix
Run Code Online (Sandbox Code Playgroud)
我想要file_suffix.csv
- 如何编辑我的代码以保留文件的扩展名?
查找+ bash方法:
export suffix="test"
Run Code Online (Sandbox Code Playgroud)
a ) 查找-exec
操作:
find your_folder -type f ! -name "*.zip" -exec bash -c 'f=$1; if [[ "$f" =~ .*\.[^.]*$ ]]; then ext=".${f##*\.}"; else ext=""; fi; mv "$f" "${f%.*}_$suffix$ext"' x {} \;
b ) 或者使用 bashwhile
循环:
find your_folder/ -type f ! -name "*.zip" -print0 | while read -d $'\0' f; do
if [[ "$f" =~ .*\.[^.]*$ ]]; then
ext=".${f##*\.}"
else
ext=""
fi
mv "$f" "${f%.*}_$suffix$ext"
done
Run Code Online (Sandbox Code Playgroud)