我的文件夹中有数百个名为“report.json”的文件
每个文件夹包含文件和子文件夹
例如,我有一个名为的文件夹1在这个文件夹中,我还有其他文件和文件夹,还有一个名为“report.json”的文件,我需要将这个文件复制到另一个文件夹,并将该文件重命名为 1_report.json,然后在所有文件夹中执行此操作。
我想要一个脚本进入这些文件夹并重命名并复制文件 report.json (FolderName_report.json)
所以我的新文件夹中会有 1_report.json 2_report.json 3_report.json 等(1,2,3 是文件夹名称)
答案1
阅读man find xargs grep cut bash
并做一些类似的事情未经测试:
# In $HOME/bin/copy_report:
#!/bin/bash
# copy "dir1/dir2/report.json" to $outputdir/dir1_report.json
debug=0
if [[ "$1" = "--debug" ]]; then
debug=1
shift
fi
# Adjust as needed
outputdir="$HOME/output_dir"
[[ -d "$outputdir" ]] || mkdir --mode=0750 "$outputdir"
while [[ $# -gt 0 ]] ; do
fromfile="$1"
shift
field_one="$(echo "$fromfile" | cut -d/ -f1)"
field_onetwo="$(echo "$fromfile" | cut -d/ -f1,2 | tr '/' '_' )"
tofile="$outputdir/${field_one}_report.json"
if [[ $debug -ne 0 ]] ; then
echo "cp \"$fromfile\" \"$tofile\""
else
cp "$fromfile" "$tofile"
fi
done
然后,
find . -type f -name 'report.json' -print0 | \
xargs -0 -r $HOME/bin/copy_report --debug
--debug
当您满意时,删除最后一行的“ ”。