我想重命名文件然后将其复制到一个文件夹

我想重命名文件然后将其复制到一个文件夹

我的文件夹中有数百个名为“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当您满意时,删除最后一行的“ ”。

相关内容